微信 授权 微信 公众号 授权
授权仅仅是获取用户的基本信息例如头像,昵称,并非使用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,换取用户资料

打开一个微信公众号号,点击一个链接要跳转到,其他页面。但是跳转到其他页面需要授权才能跳转。这就是本教程需要说的。
什么是OAuth
假如本站要获取其他用户的qq基本信息,要通过OAuth开放协议,这样可以在不提供密码的时候把信息拿到,前提是qq用户要授权。
(1)“开发 — 接口权限 — 网页服务 — 网页帐号 — 网页授权获取用户基本信息”
的配置选项中,修改授权回调域名。

(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/



绑定小程序也一样。剩下的教程跟1,2,3步骤一样
http://www.3jke.com/news/2030/?tdsourcetag=s_pcqq_aiomsg
https://www.cnblogs.com/txw1958/p/weixin71-oauth20.html