随身笔记
随身笔记

微信公众号页面授权获取用户基本信息

微信 授权 微信 公众号 授权

授权仅仅是获取用户的基本信息例如头像,昵称,并非使用jssdk,跟分享和拉起支付没关系。

想看分享功能点击《微信端分享、手机QQ好友分享以及小程序和H5数据交互》

 

快速了解步骤:

//以下步骤是让H5在公众号能获取到用户的基本信息
1,我们网站的/a
2,授权https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=encodeURIComponent(/a)&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
3,授权后,调回/a?code=123
4,用code换取 token和openid
5,用token和openid,换取用户资料

 

https://sdeno.com/wp-content/uploads/2019/07/wxshouquan.jpg

打开一个微信公众号号,点击一个链接要跳转到,其他页面。但是跳转到其他页面需要授权才能跳转。这就是本教程需要说的。

 

 

什么是OAuth

假如本站要获取其他用户的qq基本信息,要通过OAuth开放协议,这样可以在不提供密码的时候把信息拿到,前提是qq用户要授权。

 

准备条件:

(1)“开发 — 接口权限 — 网页服务 — 网页帐号 — 网页授权获取用户基本信息”
的配置选项中,修改授权回调域名。

https://sdeno.com/wp-content/uploads/2019/07/clipboard1-1024x623.png

 

(2)用户要已关注公众号

 

注意:使用snsapi_base静默授权,不会弹窗但仅仅能获取到openid,但也足以实现分享、支付功能。

要获取unionid就必须使用snsapi_userinfo。

 

网页授权文档

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

 

开始授权

以下教程使用snsapi_base授权,静默授权就是不会弹窗让用户去点击。

1,以下地址由后台去请求,用户授权后获取code:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

 

案例:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

*注意redirect_uri参数要做encodeURIComponent(url)处理

 

用户点击后且没报错说明执行成功并执行回调访问链接且带code参数例如,

http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1  //code码会拼接到redirect_uri地址上返回给我们
http://mascot.duapp.com/oauth2.php //我们之前设置的redirect_uri
state=1 //携带的参数同时也传回来
code // 用这个code来换取access_token

 

2,使用code换取access_token和openid

上一个步骤执行成功就会,再次执行我们后台自己的接口,并且还带有参数:http://mascot.duapp.com/oauth2.php?code=00b788e3b42043c8459a57a8d8ab5d9f&state=1

利用code参数的值去调用以下链接

 

换取的连接是:

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

 

例如:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx8888888888888888&secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&code=00b788e3b42043c8459a57a8d8ab5d9f&grant_type=authorization_code

如果成功换成后就会返回类似这样的数据结构
{
“access_token”: “OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN–2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw”,
“expires_in”: 7200,
“refresh_token”: “OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A”,
“openid”: “oLVPpjqs9BhvzwPj5A-vTYAX3GLc”,
“scope”: “snsapi_userinfo,”
}

注意这里的token有效时间是2个小时,也就是7200秒,所以本地用cookies存储access_token时最好设置过期时间是7000秒保证拉取最新

 

3,用access_token和openid换取用户基本信息 (如果之前用的是snsapi_userinfo方式授权那么这步也会返回获取unionid)

请求结构是:

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

例如:
https://api.weixin.qq.com/sns/userinfo?access_token=OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN–2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw&openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc

成功后会获得类似这样的数据结构:
{
“openid”: “oLVPpjqs9BhvzwPj5A-vTYAX3GLc”,
“nickname”: “刺猬宝宝”,
“sex”: 1,
“language”: “简体中文”,
“city”: “深圳”,
“province”: “广东”,
“country”: “中国”,
“headimgurl”: “http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0”,
“privilege”: []
}

 

4,OAuth2认证就完成了

 

 

5,如何获取unionid

条件:

如果希望微信公众号和小程序都能获取unionid,必须在微信开放平台同时绑定公众号和小程序。

微信开放平台https://open.weixin.qq.com/

https://sdeno.com/wp-content/uploads/2019/07/kaifang1.jpg
https://sdeno.com/wp-content/uploads/2019/07/kaifang2.jpg

 

https://sdeno.com/wp-content/uploads/2019/07/kaifang3.jpg

绑定小程序也一样。剩下的教程跟1,2,3步骤一样

http://www.3jke.com/news/2030/?tdsourcetag=s_pcqq_aiomsg

 

https://www.cnblogs.com/txw1958/p/weixin71-oauth20.html

 

没有标签
首页      小程序      微信公众号页面授权获取用户基本信息

随身笔记

微信公众号页面授权获取用户基本信息
微信 授权 微信 公众号 授权 授权仅仅是获取用户的基本信息例如头像,昵称,并非使用jssdk,跟分享和拉起支付没关系。 想看分享功能点击《微信端分享、手机QQ好友分享以及小程序和H…
扫描二维码继续阅读
2019-07-09