1.前置条件
- 服务号(企业) -- 通过微信认证
- 可以在微信公众平台-开发-接口权限查看
- 需要先配置一下授权回调域名(只能配置一个)
- 开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息
- 请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
2.步骤
除了步骤一,其他都必须由后台请求
由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
- 用户同意授权,获取code(可以由前端来做)
- 通过code换取网页授权access_token
- 刷新access_token(如果需要)
- 拉取用户信息
3.具体实现(获取用户详细信息snsapi_userinfo)
准备一个空白页面,在空白页面进行授权获取code-用户授权同意
- 是否是微信(是则继续,否则加载实际页面结束)
let ua = navigator.userAgent.toLowerCase(); let isWeixin = ua.indexOf('micromessenger') !== -1;
- 判断是否拿到code(是则发起后台拿到用户信息步骤并加载实际页面结束,否则继续)
3.为了解决只能配置一个授权回调域名,请求后台做一个中间层
文档- 让后台传一个微信统一授权地址,本地跳转到后台指定的路径
- 后台指定的路径去跳转到微信授权
- 同意授权后在跳回实际页面
4.为了防止分享的时候获取不到下一个人的授权信息
- 需要在分享的时候清空授权返回的code,仅需要分享的链接清空!获取后台分享配置的不需要!
5.为了防止用户获取到授权后刷新页面code过期重复获取用户信息问题 - 可以利用sessionStorage存储一个标识进行识别
以上内容,如有错误请指出,不甚感激。
如需转载,请注明出处