飞书二维码登录注意点

1.前端SDK版本

bash 复制代码
  第一个手机端授权后、网页端还需要点击一次授权 授权后会跳转到redirect_uri页面,连接会携带code
  <script src="https://lf-package-cn.feishucdn.com/obj/feishu-static/lark/passport/qrcode/LarkSSOSDKWebQRCode-1.0.3.js"></script>
  只需要在手机上点击授权
  <script src="https://sf3-cn.feishucdn.com/obj/static/lark/passport/qrcode/LarkSSOSDKWebQRCode-1.0.1.js"></script> 

2. 流程是生成二维码,redirect_uri地址填写一个页面用来接收授权码,传递授权码给后端、后端再进行鉴权 返回token,redirect_uri 地址需要和后台飞书接口的redirect_uri地址保持一致

bash 复制代码
// 初始化扫码登录
    initQRCodeLogin() {
      console.log(window.QRLogin)
      if (window.QRLogin) {
        // 清空之前的二维码容器内容,防止生成多个二维码
        const loginContainer = document.getElementById("login_container");
        loginContainer.innerHTML = "";
        // 调起扫码
        var goto = `https://passport.feishu.cn/suite/passport/oauth/authorize?client_id=cli_a7b076f0a172d00c&redirect_uri=http://xxxxx/login&response_type=code&state=code`;

		// redirect_uri

        const QRLoginObj = QRLogin({
          id: "login_container",
          goto: goto,
          width: "280",
          height: "280",
          style: "width:280px;height:280px;border:none"
        });

        var handleMessage = function (event) {
        var origin = event.origin;
        // 使用 matchOrigin 方法来判断 message 是否来自飞书页面
        if (QRLoginObj.matchOrigin(origin)) {
          var loginTmpCode = event.data;
          // 在授权页面地址上拼接上参数 tmp_code,并跳转
          window.location.href = `${goto}&tmp_code=${loginTmpCode}`;
          console.log(loginTmpCode);
        }
      };
      if (typeof window.addEventListener != "undefined") {
        window.addEventListener("message", handleMessage, false);
      } else if (typeof window.attachEvent != "undefined") {
        window.attachEvent("onmessage", handleMessage);
      }
      }
    },

3. 需要注意后台飞书接口"获取用户信息"版本不一样 需要的token 也不一样,

bash 复制代码
// 需要的是 USER_ACCESS_TOKEN
https://open.feishu.cn/open-apis/authen/v1/user_info
// 获取 USER_ACCESS_TOKEN 接口
https://open.feishu.cn/open-apis/authen/v2/oauth/token

注意区分 tenant_access_token 和 USER_ACCESS_TOKEN
接口版本不一样 需要的token也会不一样
相关推荐
星恒随风1 分钟前
Python 基础语法详解(3):顺序语句、条件语句和循环语句一篇讲清楚
开发语言·笔记·python·学习
CHHH_HHH1 分钟前
【C++】红黑树:比AVL树更实用的平衡二叉搜索树
开发语言·数据结构·c++·算法·stl
牛油果子哥q4 分钟前
【C++内存对齐与结构体填充】C++内存对齐与结构体填充深度精讲:对齐规则、结构体内存大小计算、填充冗余、笔试真题与工程优化方案
开发语言·c++
ch.ju6 分钟前
Java程序设计(第3版)第四章——set-get方法
java·开发语言
智能制造产品经理代码提升7 分钟前
快速搭建PayPal标准API测试框架
开发语言·lua
智能制造产品经理代码提升8 分钟前
Postman批量CaptureID全自动查询
开发语言·lua
爱喝水的鱼丶9 分钟前
SAP-ABAP:SAP 内存管理详解:从架构到优化
开发语言·学习·架构·sap·abap·内存管理
出海小龙11 分钟前
【PLG洞察】| 飞书成功之路:关键在分销裂变
飞书
我是一颗柠檬15 分钟前
【Java项目技术亮点】Outbox事件驱动模式:解决分布式事务的终极方案
java·开发语言·分布式·后端·中间件·kafka
那晚的她15 分钟前
Scala中Set集合
开发语言·后端·scala