获取微信openid

2018-09-20  本文已影响52人  2894ab72509d

微信官方文档写的还是蛮细致的,稍微有点坑 ->  微信文档

步骤跟微信一致

第一步:获取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(微信的昵称)

上一篇下一篇

猜你喜欢

热点阅读