引言
最近做了一个新项目,需要接入飞书H5应用,做得过程中也是遇到好多问题,现在总结分享给大家。
操作
首先遇到的一个棘手的问题就是免登问题,下面是官方文档的介绍:
1、开发指南开发网页应用开发指南
2、网页应用免登(SSO)示例代码介绍
我是直接使用第2条。
按照官方文档引入
<!-- 在html文档中引入 JSSDK -->
<!-- JS 文件版本在升级功能时地址会变化,如有需要(比如使用新增的 API),请重新引用「网页应用开发指南」中的JSSDK链接,确保你当前使用的JSSDK版本是最新的。-->
<script type="text/javascript"
src="https://lf1-cdn-tos.bytegoofy.com/goofy/lark/op/h5-js-sdk-1.5.26.js">
</script>
<!-- 在页面上添加VConsole方便调试-->
<script src="https://unpkg.com/vconsole/dist/vconsole.min.js"></script>
<script>
// VConsole will be exported to `window.VConsole` by default.
var vConsole = new window.VConsole();
</script>
然后,我们在Vue项目中这样使用:
onMounted(() =>{
const _userData = localStorage.getItem("userData")
if (_userData) {
userDataRef.value = JSON.parse(_userData)
} else {
console.log("window.h5sdk.ready before");
if (window.h5sdk){
showLoading.value = true
window.h5sdk.ready(() => {
// 调用JSAPI tt.requestAccess 获取 authorization code
tt.requestAccess({
appID: 'xxx',
scopeList: [],
// 获取成功后的回调
success(res) {
console.log("getAuthCode succeed", res);
showLoading.value = false
if (res.code) {
getUserInfo(res.code, (res) => {
//todo:做你自己的业务逻辑
})
}
},
// 获取失败后的回调
fail(err) {
showLoading.value = false
showToast('鉴权失败!')
console.log(`getAuthCode failed, err:`, JSON.stringify(err));
}
})
})
}else {
console.log("window.h5sdk not ready");
}
}
})
解释一下,页面打开之后立即查询是否有userData数据,如果有,则不获取飞书code,否则获取code,获取完扔给后台,后台处理完之后带上用户信息返回即可,这样就完成了免登操作,下面介绍下如何本地调试。
本地调试
1、登录飞书的后台应用,点击去调试按钮:

2、填写你的本地开发地址(推荐ip形式)

3、即可打开飞书浏览你本地的开发环境

因为我们引入了vconsole,所以会显示你打印的日志,方便你开发调试。

4、注意要在后台管理的安全设置里面设置重定向URL,否则获取Code会失败

总结
1、本地调试:用IP不要用localhost
2、发布飞书应用想让全体成员公开,需要发布的时候设置选中全体成员,如下所示:

1万+

被折叠的 条评论
为什么被折叠?



