微信公众号开发简单的网页授权登陆获取用户基本信息

由于业务需要,近期在做微信公众号开发,其中一个模块是微信用户点击个人中心访问可以得到次微信用户的头像昵称国家省份等基本信息。

但由于业务需求,这块功能暂时用不上了,但这功能的实现毕竟是自己花费几天时间搞出来的,觉得以后会用的上,暂且记录一下实现过程。

首先:获取用户信息的过程属于微信网页授权登陆,再做这一块之前请先阅读微信开发文档以熟悉基本的开发过程:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

微信开发文档开头讲的授权基本配置,两张授权方式,access_token的区别这里就不多说了,文档说的很清楚,下面就直接记录一下开发的过程:

为了使过程清晰,结合着文档给出的开发步骤按照自己开发的方式一步步说,首先文档给的开发步骤:

第一步:肯定是先获取code了,要获取code,官网给出了获取code的链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect;我这里是直接复制过来的,当然为了避免出错,建议还是直接复制过来好,然后替换上相应的参数   

官网上给出的有相应的参数说明:

然后在链接上依次替换上

appid在公众微信号平台上可以看的到的,这个不多说;

redirect_uri授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理,哪就定义一个对链接进行urlEncode处理的方法:

在通用工具类里面写一个方法对链接进行编码:

注意引入相应的jar包,这个方法里面的参数就是要转码的链接;

response_type:返回类型 就填code就可以了;

scope:应用授权作用域,如果仅仅需要获取关注用户的openid 哪这个可以填:snsapi_base ;如果需要获取用户的其他信息,就填写:snsapi_userinfo

state:可以不用改写;

wechat_redirect:带在后面就可以了。

这里说一下关于链接跳转的:

有一种是这样的:http://www.jb51.net/article/99465.htm

但是我是将链接的url直接作为微信自定义菜单中view类型中的url

https://open.weixin.qq.com/connect/oauth2/authorize?appid=此处填写你的appid&redirect_uri=此处添加你要重定向的地址(要经过urlEncode编码过的)&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

我用这种是成功的了,原因只是不想跳太多的方法,所以我自己是这样写的。

下面继续说通过上面方法获取到code以后的做法,直接上图了

说明

1:上一部链接中需要重定向的路径;

2:此时重定向过来的路径已经带有code了,此步骤是获取到链接带过来的code参数(请注意code参数只能使用一次而且有效时间很短,5分钟未被使用便会过期需要重新获取。)

3:先说一下为什么要这么写。如果我不用这个if语句直接获取code然后一步步获取access_token,openid,用户信息等这样固然是可以的,但是在微信公众号中打开链接获取到用户信息后在此页面刷新或报错,就是code已经被使用这个错误

前面说过code只能被使用一次,为了解决这个问题,我网上没有查到具体的解决方案,而且时间不够,只能自己想想写了一个就是先判断缓存中有没有网页授权access_token如果有则证明code已经被使用过了,刷新的时候直接用缓存中的;

同理,如果没有择证明是第一次网页授权,就是接下来的if(weixinOauth2Token == null) 里面的方法了;这里是我自己想到的一个办法,至于可行性我自己用的时候没有出现什么错误,但是没有经过成百上千次的测试,所以仅供参考使用。

4:你的公众微信号中的appid;

5:你的公众微信号中的appsecret;

6:2,4.5都是6的参数,是为了获取网页授权凭证,用到的请求链接微信公众号文档给的有:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code     

实现的方法为:在封装的AdvancedUtil中实现获取网页授权凭证,还是直接上图

这是第6步的方法实现;

7:这个是把网页授权的access_token等信息存入到session中;

8:是为了防止access_token实现刷新用的,有需要的时候用,方法大致和获取的相同。

9:是刷新access_token的方法;具体有没有刷新,这个因为时间问题我也没有经过多次的测试,至少现在我用的时候没有出现什么异常,仅供参考。

10:获取网页授权凭证接口的access_token;

11:获取用户的openId;

12:就是获取用户的基本信息了,在这之前需要先定义一个用户基本信息实体类SNSUserInfo:

写上相应的get,set方法;然后是获取用户基本信息的方法getSNSUserInfo:

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

然后是具体实现:

13:是需要跳转的页面路径:

这些就是获取用户信息的基本步骤,都是个人总结,仅供参考,此处写一下方便以后用到。

然后是页面上调用

等到测试完成再次总结。先写到这里记录一下,开始工作写新的内容了!

此外:对于刚接触微信公众号开发的同学我可以推荐一个学习:http://www.cnblogs.com/liuhongfeng/p/4846260.html

原文地址:https://www.cnblogs.com/ka-bu-qi-nuo/p/8715854.html

时间: 2024-10-10 22:29:56

微信公众号开发简单的网页授权登陆获取用户基本信息的相关文章

微信公众平台开发(76) 无高级接口账号获取用户基本信息

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

(转)微信公众平台开发 OAuth2.0网页授权

微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure

微信公众号网页授权登录获取用户基本信息

发布时间:2018-10-24 技术:spring springboot,微信公众号 概述 微信公众号网页授权登录后微信获取用户基本信息,部署即可运行完整demo 详细 代码下载:http://www.demodashi.com/demo/14290.html 一.前言 (1)适合人群 1,JAVA服务端开发人员 2,初级人员开发人员 3,了解spring springboot + maven 3,了解公众号开发 (2)你需要准备什么? 1,积极主动学习 2,微信公众号开发基本流程 3,java

PHP微信公众平台开发高级篇—网页授权接口

[1]带微信帐号的手机 [2]打开浏览器,这里以IE为例. 输入:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login [3]用手机登录你的微信,使用微信中的“扫一扫”功能,扫描上面网页中的二维码.在手机上会出现以下界面: [3]网页授权获取用户基本信息 注意: 这里的填写只要域名就可以里,不要http和以及域名下面的方法哦! [4]然后在该域名下面定义一个控制器,添加方法即可 [5]方法一:跳转获取Code[需要微信登陆或者

微信公众平台开发 OAuth2.0网页授权认证

一.什么是OAuth2.0 官方网站:http://oauth.net/   http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站.移动或桌面应用上存储的私

微信开发之分清公众平台和开放平台、公众号全局凭证和网页授权凭证

虽然公司自己的网站和给客户开发的项目中都涉及到了微信开发,自己也写了关于微信开发的两篇文章,但感觉自己对微信开发中的一些概念还是容易混淆,今天浏览了下微信公众平台.微信开放平台的后台和相关文档,算是弄清楚了下面这些东西,至于其他还没弄清楚的,以后想到了再说. 1,微信公众平台(https://mp.weixin.qq.com)和微信开放平台(https://open.weixin.qq.com) “微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台”,登录公众平台账号后,可以看到它有一

微信公众号开发之网页授权登录及code been used 解决!

首先微信公众号开发网页授权登录使用环境: 开发工具:eclipse:服务器:tomcat8,开发语言:JAVA. 我写的网页授权登录时用开发者模式自定义view类型按钮点击跳转链接的. 微信网页授权登录首先以官方微信开发文档为准,大体共分为4步: 先说第一步获取code: code说明:code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5扽这未被使用自动过期. 微信公众开发文档给的有获取code的链接,建议直接复制来用,然后替换其中相应的参

微信公众号开发之网页授权(获取用户信息)

这次暑假留在学校参与工作室的项目,对微信公众号比较感兴趣,所以参与这方面的学习研究. 昨天完成了关于网页授权,获取用户信息方面的功能,所以乘热打铁,写上一篇.实现本篇涉及的 功能,还需要完成一些基础.在写完这篇博客后,我会尽快补上. -------------------------废话不多说直入正题 需要的工具: 微信公众号(可以申请,但做开发的,可以申请测试号,申请详细不多说了) 服务器(可以自行购买,我使用的是新浪的sae.) 编辑器(随意,不做推荐) 微信公众号开发文档(地址) ----

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(二)

C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一) 中讲解了如果通过微信授权2.0snsapi_base获取已经关注用户的基本信息,然而很多情况下我们经常需要获取非关注用户的信息,方法如下: 第一步和之前讲的一样:获取code,但是scope使用方法是snsapi_userinfo; 第二步,根据code获取openid和access_token(此处的access_token是通过网页授权code换取的不是我们之前讲的全局的票据),代码: 1 /// <summary> 2