zoukankan      html  css  js  c++  java
  • JS&微信_微信授权

    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存储一个标识进行识别

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

  • 相关阅读:
    linux 计划任务
    linux 进程管理
    PHP中global与$GLOBALS['']的区别
    php预定义变量
    linux 强制终止进程命令
    mysql取某表中数据的随机的方法
    mysql 连接 选库 查询
    Python 的异步 IO:Asyncio 简介
    并发和并行的区别
    asyncio模块中的Future和Task
  • 原文地址:https://www.cnblogs.com/adelina-blog/p/10832735.html
Copyright © 2011-2022 走看看