This commit is contained in:
@@ -44,9 +44,25 @@ export interface DingtalkConfig {
|
||||
* 检测是否在钉钉环境中
|
||||
*/
|
||||
export function isDingtalkEnv(): boolean {
|
||||
if (typeof window === 'undefined') return false
|
||||
if (!window.dd) return false
|
||||
return window.dd.env.platform !== 'notInDingTalk'
|
||||
if (typeof window === 'undefined') {
|
||||
console.log('[钉钉检测] window 不存在')
|
||||
return false
|
||||
}
|
||||
|
||||
// 首先通过 User-Agent 检测
|
||||
const ua = navigator.userAgent.toLowerCase()
|
||||
const isDingTalkUA = ua.includes('dingtalk') || ua.includes('aliapp')
|
||||
console.log('[钉钉检测] UA检测:', isDingTalkUA, 'UA:', ua.substring(0, 100))
|
||||
|
||||
if (!window.dd) {
|
||||
console.log('[钉钉检测] window.dd 不存在,但UA检测为:', isDingTalkUA)
|
||||
return isDingTalkUA // 如果 UA 显示是钉钉但 SDK 还没加载,也返回 true
|
||||
}
|
||||
|
||||
const platform = window.dd.env?.platform
|
||||
console.log('[钉钉检测] dd.env.platform:', platform)
|
||||
|
||||
return platform !== 'notInDingTalk'
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -314,37 +314,60 @@ const handleDingtalkLogin = () => {
|
||||
*/
|
||||
const initDingtalkLogin = async () => {
|
||||
try {
|
||||
console.log('[钉钉初始化] 开始初始化...')
|
||||
console.log('[钉钉初始化] window.dd 存在:', !!window.dd)
|
||||
console.log('[钉钉初始化] User-Agent:', navigator.userAgent)
|
||||
|
||||
// 获取钉钉配置
|
||||
const response = await getDingtalkConfig()
|
||||
console.log('[钉钉初始化] 配置响应:', response)
|
||||
|
||||
if (response.code === 200 && response.data) {
|
||||
dingtalkConfig.enabled = response.data.enabled
|
||||
dingtalkConfig.corp_id = response.data.corp_id
|
||||
dingtalkConfig.agent_id = response.data.agent_id
|
||||
console.log('[钉钉初始化] 配置已加载:', { enabled: dingtalkConfig.enabled, corp_id: dingtalkConfig.corp_id })
|
||||
}
|
||||
|
||||
// 检测钉钉环境
|
||||
isDingtalk.value = isDingtalkEnv()
|
||||
console.log('[钉钉初始化] 环境检测结果:', isDingtalk.value)
|
||||
|
||||
if (window.dd) {
|
||||
console.log('[钉钉初始化] dd.env.platform:', window.dd.env?.platform)
|
||||
}
|
||||
|
||||
// 如果在钉钉环境中且钉钉登录已启用,自动触发登录
|
||||
if (isDingtalk.value && dingtalkConfig.enabled && dingtalkConfig.corp_id) {
|
||||
console.log('[钉钉初始化] 条件满足,触发自动登录')
|
||||
autoDingtalkLogin()
|
||||
} else {
|
||||
console.log('[钉钉初始化] 条件不满足,不触发自动登录:', {
|
||||
isDingtalk: isDingtalk.value,
|
||||
enabled: dingtalkConfig.enabled,
|
||||
corp_id: dingtalkConfig.corp_id
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('初始化钉钉登录失败:', error)
|
||||
console.error('[钉钉初始化] 初始化失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 页面加载时初始化
|
||||
onMounted(async () => {
|
||||
console.log('[登录页] 页面加载,开始初始化')
|
||||
console.log('[登录页] 初始 window.dd:', !!window.dd)
|
||||
|
||||
// 尝试加载钉钉SDK
|
||||
try {
|
||||
await loadDingtalkSDK()
|
||||
console.log('[登录页] SDK加载完成,window.dd:', !!window.dd)
|
||||
} catch (e) {
|
||||
console.log('钉钉SDK加载跳过(非必须)')
|
||||
console.log('[登录页] 钉钉SDK加载跳过:', e)
|
||||
}
|
||||
|
||||
// 初始化钉钉登录
|
||||
initDingtalkLogin()
|
||||
await initDingtalkLogin()
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user