This commit is contained in:
@@ -44,9 +44,25 @@ export interface DingtalkConfig {
|
|||||||
* 检测是否在钉钉环境中
|
* 检测是否在钉钉环境中
|
||||||
*/
|
*/
|
||||||
export function isDingtalkEnv(): boolean {
|
export function isDingtalkEnv(): boolean {
|
||||||
if (typeof window === 'undefined') return false
|
if (typeof window === 'undefined') {
|
||||||
if (!window.dd) return false
|
console.log('[钉钉检测] window 不存在')
|
||||||
return window.dd.env.platform !== 'notInDingTalk'
|
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 () => {
|
const initDingtalkLogin = async () => {
|
||||||
try {
|
try {
|
||||||
|
console.log('[钉钉初始化] 开始初始化...')
|
||||||
|
console.log('[钉钉初始化] window.dd 存在:', !!window.dd)
|
||||||
|
console.log('[钉钉初始化] User-Agent:', navigator.userAgent)
|
||||||
|
|
||||||
// 获取钉钉配置
|
// 获取钉钉配置
|
||||||
const response = await getDingtalkConfig()
|
const response = await getDingtalkConfig()
|
||||||
|
console.log('[钉钉初始化] 配置响应:', response)
|
||||||
|
|
||||||
if (response.code === 200 && response.data) {
|
if (response.code === 200 && response.data) {
|
||||||
dingtalkConfig.enabled = response.data.enabled
|
dingtalkConfig.enabled = response.data.enabled
|
||||||
dingtalkConfig.corp_id = response.data.corp_id
|
dingtalkConfig.corp_id = response.data.corp_id
|
||||||
dingtalkConfig.agent_id = response.data.agent_id
|
dingtalkConfig.agent_id = response.data.agent_id
|
||||||
|
console.log('[钉钉初始化] 配置已加载:', { enabled: dingtalkConfig.enabled, corp_id: dingtalkConfig.corp_id })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测钉钉环境
|
// 检测钉钉环境
|
||||||
isDingtalk.value = isDingtalkEnv()
|
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) {
|
if (isDingtalk.value && dingtalkConfig.enabled && dingtalkConfig.corp_id) {
|
||||||
|
console.log('[钉钉初始化] 条件满足,触发自动登录')
|
||||||
autoDingtalkLogin()
|
autoDingtalkLogin()
|
||||||
|
} else {
|
||||||
|
console.log('[钉钉初始化] 条件不满足,不触发自动登录:', {
|
||||||
|
isDingtalk: isDingtalk.value,
|
||||||
|
enabled: dingtalkConfig.enabled,
|
||||||
|
corp_id: dingtalkConfig.corp_id
|
||||||
|
})
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化钉钉登录失败:', error)
|
console.error('[钉钉初始化] 初始化失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 页面加载时初始化
|
// 页面加载时初始化
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
console.log('[登录页] 页面加载,开始初始化')
|
||||||
|
console.log('[登录页] 初始 window.dd:', !!window.dd)
|
||||||
|
|
||||||
// 尝试加载钉钉SDK
|
// 尝试加载钉钉SDK
|
||||||
try {
|
try {
|
||||||
await loadDingtalkSDK()
|
await loadDingtalkSDK()
|
||||||
|
console.log('[登录页] SDK加载完成,window.dd:', !!window.dd)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('钉钉SDK加载跳过(非必须)')
|
console.log('[登录页] 钉钉SDK加载跳过:', e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化钉钉登录
|
// 初始化钉钉登录
|
||||||
initDingtalkLogin()
|
await initDingtalkLogin()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user