发表于: 2019-12-27 23:03:13
1 1341
今天完成的事:
- appid就是你申请的服务号的appid,可以在公众号基本配置中查看。
- redirect_uri代表授权成功后回调的地址,域名必须和步骤1中填写的网页授权域名一致,比如要回调的页面uri是/home,那么回调地址应为http://www.sawyer.com/home,并且不能带端口。注意,REDIRECT_URI的值需要进行urlEncode处理;
- response_type填写code即可。
- scope代表授权类型,有基本级别snsapi_base以及用户信息级别snsapi_userinfo。如果是base级别,对于用户来说是无感知的静默授权,但是能获取到的也只有用户的openid而已,如果是userinfo级别,那么对于已经关注公众号的用户来说也是静默授权,但是对于没有关注公众号的用户,则需要用户手动点击授权页面,如下。用户手动确认授权
- state是用户自定义参数,回调时会原封不动传回来。可不填。
- 使用上一步返回的票据code去微信服务器换取网页授权基础信息,其中包括网页授权access_token。注意,这里的网页授权access_token和下一篇的基础服务access_token不同。请求地址为:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code针对这个请求的参数进行一下解释:
- appid就是你申请的服务号的appid,可以在公众号基本配置中查看。
- secret就是你申请的服务号的appsecret,可以在公众号基本配置中查看。
- code就是上一步返回的code,是微信用户网页授权的短期一次性票据,有效期5分钟。
- grant_type填写authorization_code即可。
如果scope类型为snsapi_base
,那么微信网页授权到此结束,已经拿到微信用户的openid。注意,任意微信用户对于同一公众号有唯一openid,对于不同公众号有不同openid,所以开发者需要在多个微信公众号中鉴别同一个用户的话,需要用到unionid机制。要获取用户的unionid需要开发者的公众号绑定到微信开放平台后,使用snsapi_userinfo级别的网页授权才能获取,或者用户关注后使用微信用户管理接口获取用户详细信息,这个在下一篇中会介绍。
- 如果scope类型为
snsapi_userinfo
,那么可以使用上一步获得的网页授权access_token来请求微信接口获取用户详细信息。接口链接如下:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
针对这个请求的参数进行一下解释:
access_token
上一步获取到的网页授权access_token,网页授权access_token是一个长期令牌,有效期2小时,即上一步返回的expires_in的时间。如何刷新下一步会讲。openid
上一步获取到的微信用户的openid。lang
返回国家地区语言版本,zh_CN简体,zh_TW繁体,en英语。
注意,网页授权access_token作为机密信息,不允许保存在前端,该请求应由后端发起。到这一步已经取到了微信用户的详细信息,unionid是需要用户绑定公众号到微信开放平台后才会出现。这里要吐槽一下微信开发文档,其中有不少错误,比如这里的返回对象,官网的文档就少了"lang"这一项(2018/1/17)。
- 如果需要的话,使用步骤3获取的refresh_token请求以下链接刷新网页授权access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN。
appid
公众号的appid。grant_type
填写refresh_token。refresh_token
步骤3获取到的refresh_token。
请求成功后返回对象和步骤3是一样的,就是微信网页授权基本信息。
明天计划的事:
遇到的问题:
暂无
收获:
如何前登陆授权
评论