官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
前置条件
拿到公众号的appId
(最好在静态文件中写配置项,用户可直接修改服务器上的静态文件,不需要改代码)secret
安全级别较高,不保存在客户端(页面缓存或服务器文件),公众号已设置网页授权回调域名(相当于微信后台白名单)
流程介绍
- 先根据appId获取code,回调链接会带上code,此时,拿链接中的code、appId、secret去请求refresh_token、access_token、openid等信息。这个过程是静默的,用户无感知。
如果只是拿openid,在请求code时scope=snsapi_base;如果还需要拿userInfo,scope=snsapi_userinfo,且需要用户手动点击同意之后才能获取到code(用户未关注公众号的情况下,如果已关注,那这个过程也是静默的)
注:回调链接 redirect_uri 需要先配置,在微信后台可访问到!!
获取code:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
获取openId:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
问题排查
- 获取code失败,报错信息如下,检查公众号配置的网页授权是否正确
- 服务器能否正常访问微信API,不行的话需要增加
DNS解析