From 1b39289dad228612045068298d3e1ee542a0dbe1 Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Sun, 3 Aug 2025 19:17:00 +0800 Subject: [PATCH] Add popup-based Google login function --- frontend/src/utils/google.js | 38 ++++++++++++++++++++++++++- frontend/src/views/LoginPageView.vue | 6 ++--- frontend/src/views/SignupPageView.vue | 6 ++--- 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/frontend/src/utils/google.js b/frontend/src/utils/google.js index 533d6c808..d042cbae8 100644 --- a/frontend/src/utils/google.js +++ b/frontend/src/utils/google.js @@ -12,7 +12,23 @@ export async function googleGetIdToken() { window.google.accounts.id.initialize({ client_id: GOOGLE_CLIENT_ID, callback: ({ credential }) => resolve(credential), - use_fedcm: true + use_fedcm: true + }) + window.google.accounts.id.prompt() + }) +} + +export async function googleGetIdTokenWithPop() { + return new Promise((resolve, reject) => { + if (!window.google || !GOOGLE_CLIENT_ID) { + toast.error('Google 登录不可用, 请检查网络设置与VPN') + reject() + return + } + window.google.accounts.id.initialize({ + client_id: GOOGLE_CLIENT_ID, + callback: ({ credential }) => resolve(credential), + ux_mode: 'popup' }) window.google.accounts.id.prompt() }) @@ -53,6 +69,15 @@ export async function googleSignIn(redirect_success, redirect_not_approved) { } } +export async function googleSignInWithPop(redirect_success, redirect_not_approved) { + try { + const token = await googleGetIdTokenWithPop() + await googleAuthWithToken(token, redirect_success, redirect_not_approved) + } catch { + /* ignore */ + } +} + import router from '../router' export function loginWithGoogle() { @@ -64,4 +89,15 @@ export function loginWithGoogle() { router.push('/signup-reason?token=' + token) } ) +} + +export function loginWithGoogleWithPop() { + googleSignInWithPop( + () => { + router.push('/') + }, + token => { + router.push('/signup-reason?token=' + token) + } + ) } \ No newline at end of file diff --git a/frontend/src/views/LoginPageView.vue b/frontend/src/views/LoginPageView.vue index cba93fb48..906c17f47 100644 --- a/frontend/src/views/LoginPageView.vue +++ b/frontend/src/views/LoginPageView.vue @@ -31,7 +31,7 @@
-
+ @@ -54,7 +54,7 @@