JS&微信_微信授权

  • 微信api
  • 授权demo

  • 获取openid --- snsapi_base
  • 获取用户信息 --- snsapi_userinfo

1.前置条件

  1. 服务号(企业) -- 通过微信认证
    • 可以在微信公众平台-开发-接口权限查看
  2. 需要先配置一下授权回调域名(只能配置一个)
    • 开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息
    • 请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

2.步骤

除了步骤一,其他都必须由后台请求

由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。

  1. 用户同意授权,获取code(可以由前端来做)
  2. 通过code换取网页授权access_token
  3. 刷新access_token(如果需要)
  4. 拉取用户信息

3.具体实现(获取用户详细信息snsapi_userinfo)

  1. 准备一个空白页面,在空白页面进行授权获取code-用户授权同意

  2. 是否是微信(是则继续,否则加载实际页面结束)
    let ua = navigator.userAgent.toLowerCase(); let isWeixin = ua.indexOf('micromessenger') !== -1;
  3. 判断是否拿到code(是则发起后台拿到用户信息步骤并加载实际页面结束,否则继续)
    3.为了解决只能配置一个授权回调域名,请求后台做一个中间层
    文档
    1. 让后台传一个微信统一授权地址,本地跳转到后台指定的路径
    2. 后台指定的路径去跳转到微信授权
    3. 同意授权后在跳回实际页面
      4.为了防止分享的时候获取不到下一个人的授权信息
    • 需要在分享的时候清空授权返回的code,仅需要分享的链接清空!获取后台分享配置的不需要!
      5.为了防止用户获取到授权后刷新页面code过期重复获取用户信息问题
    • 可以利用sessionStorage存储一个标识进行识别

以上内容,如有错误请指出,不甚感激。
如需转载,请注明出处

猜你喜欢

转载自www.cnblogs.com/adelina-blog/p/10832735.html