获取微信openid
微信官方文档写的还是蛮细致的,稍微有点坑 -> 微信文档
步骤跟微信一致
第一步:获取code
动态拼接url,或者写死都可以
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
1、appid就是公众号平台的appid
2、redirect_uri 授权回调地址,设置这个之前得先去微信公众号平台的后台设置 网页授权域名
回调地址就是这个域名下的
比如网页授权域名是 www.baidu.com
回调地址就必须是 www.baidu.com开头的,比如 www.baidu.com/wx/notify
并且拼接的时候redirect_uri 必须encode不然微信会报错
3、response_type 参数等于code 写死的
4、scope有两种参数:
snsapi_base 不需要用户授权,只能拿到openid
snsapi_userinfo 需要用户授权,可以拿到更多的信息
5、state 微信的一个可以带自己设置的参数的字段
具体写法是 你的字段#wechat_redirect
#wechat_redirect是写死的,可以带一些参数到回调地址
第二步:获取微信openid
只要用户调动了前面生成的url,就会前往授权页面,如果授权成功,微信就会调用你所填写的回调地址
并且携带code和state这两个参数
code用来获取openid,state就是你所带的参数,用于做判断
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
这个url是获取openid的url
1、appid就是公众号平台的appid
2、secret就是公众号平台的secret
3、code微信传递过来的code
4、grant_type 写死的,参数就是authorization_code
调用成功后,微信就会返回很多参数,其中就有openid,到这一步就算结束了,
如果前面的scope设置的是snsapi_userinfo ,还可以进行下一步,直接获取微信用户信息
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
这个是获取用户信息的url
1、access_token这个是https://api.weixin.qq.com/sns/oauth2/access_token这个接口返回的,也就是上面获取openid的接口,
2、openid 上面可以获取到
3、lang 写死的参数zh_CN
返回的参数如下图所示
微信有点坑爹,授权完之后直接跳转的是回调地址页面,但是回调地址页面又是一个接口,返回的只有json数据,我的解决办法就是重定向到一个页面,并且在url拼接web端需要的值,例如nickname(微信的昵称)