1.前端SDK版本
第一个手机端授权后、网页端还需要点击一次授权 授权后会跳转到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地址保持一致
// 初始化扫码登录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_uriconst 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 也不一样,
// 需要的是 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也会不一样