From 0e1efc9656d044b10753d4434ab92f2e796ef4f9 Mon Sep 17 00:00:00 2001 From: lcx Date: Tue, 22 Jul 2025 09:40:30 +0800 Subject: [PATCH] feat: Add Feishu OAuth login & consumer-grade MCP --- frontend/packages/core/src/pages/Login.tsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/frontend/packages/core/src/pages/Login.tsx b/frontend/packages/core/src/pages/Login.tsx index b4769ca1..8b44ce91 100644 --- a/frontend/packages/core/src/pages/Login.tsx +++ b/frontend/packages/core/src/pages/Login.tsx @@ -93,6 +93,11 @@ const Login: FC = () => { const code = query.get('code') if (code) { feishuLogin(code) + setSpinning(false) + return + } + if (isInFeishuClient() && feishu) { + openFeishuLogin() } setSpinning(false) } @@ -161,6 +166,21 @@ const Login: FC = () => { fetchLogin({ username: 'guest', password: '12345678' }) } + const isInFeishuClient = () => { + // 方法1:检查User-Agent + const ua = navigator.userAgent.toLowerCase(); + const isLark = ua.includes('lark') || ua.includes('feishu'); + + // 方法2:检查全局对象 + const hasSDK = typeof window.h5sdk !== 'undefined' || typeof window.tt !== 'undefined'; + + // 方法3:检查URL参数 + const params = new URLSearchParams(window.location.search); + const hasFeishuParams = params.has('from') || params.has('required_launch_ability'); + + return isLark || hasSDK || hasFeishuParams; + } + // 打开飞书授权页面 const openFeishuLogin = () => { const href = window.location.origin + window.location.pathname