fix: 重新添加 H5 JSSDK 并使用 h5sdk.ready() 等待 tt 对象
- H5 JSSDK 是飞书网页应用免登必需的 - 使用 h5sdk.ready() 确保 tt 对象被注入后再调用 API
This commit is contained in:
@@ -9,6 +9,9 @@ import styles from './login.module.css'
|
||||
declare global {
|
||||
interface Window {
|
||||
tt?: any
|
||||
h5sdk?: {
|
||||
ready: (callback: () => void) => void
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +76,20 @@ export default function Login() {
|
||||
|
||||
// 飞书内免登
|
||||
const attemptFeishuAutoLogin = async (companyParam?: string) => {
|
||||
// 如果 h5sdk 存在,使用 h5sdk.ready() 等待环境就绪
|
||||
if (window.h5sdk?.ready) {
|
||||
window.h5sdk.ready(() => {
|
||||
console.log('h5sdk ready, tt对象:', !!window.tt)
|
||||
if (window.tt) {
|
||||
performFeishuLogin(companyParam)
|
||||
} else {
|
||||
console.error('h5sdk ready 后 tt 对象仍不存在')
|
||||
setLoading(false)
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 如果 tt 对象已存在,直接使用
|
||||
if (window.tt) {
|
||||
performFeishuLogin(companyParam)
|
||||
|
||||
Reference in New Issue
Block a user