Vue3-接入飞书H5应用
引言
最近做了一个新项目,需要接入飞书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 = truewindow.h5sdk.ready(() => {// 调用JSAPI tt.requestAccess 获取 authorization codett.requestAccess({appID: 'xxx',scopeList: [],// 获取成功后的回调success(res) {console.log("getAuthCode succeed", res);showLoading.value = falseif (res.code) {getUserInfo(res.code, (res) => {//todo:做你自己的业务逻辑})}},// 获取失败后的回调fail(err) {showLoading.value = falseshowToast('鉴权失败!')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、发布飞书应用想让全体成员公开,需要发布的时候设置选中全体成员,如下所示:
引用
错误码