Vercel部署+Firebase认证:无法自定义Google登录重定向URL
解决Vercel部署的NextJS应用中Firebase Auth自定义重定向URL问题
不用切换到Firebase托管,只要完成以下几个步骤就能实现自定义重定向URL:
1. 在Firebase控制台配置授权域与重定向URI
这是最关键的一步,不管你用什么托管平台,Firebase Auth都需要明确授权你的自定义域名:
- 打开Firebase控制台,进入项目的「Authentication」模块
- 切换到「登录方法」标签,找到Google登录并点击编辑
- 在「授权的重定向URI」列表中,添加你的Vercel自定义域名对应的回调地址,比如
https://customdomain.com/__/auth/handler(Firebase Auth默认回调路径),或者你自己定义的回调路径(如果手动处理登录逻辑) - 再进入Authentication的「设置」页面,在「授权域」里添加你的
customdomain.com,保存更改
2. 修正Firebase配置的语法错误
你提供的配置里用了中文引号,这会导致配置失效,改成英文引号:
const firebaseConfig = { authDomain: "customdomain.com", // 其他Firebase配置项(apiKey、projectId等) };
3. (可选)手动指定重定向URI
如果默认的重定向行为不符合预期,可以在调用Google登录时显式指定redirectUri:
import { getAuth, signInWithRedirect, GoogleAuthProvider } from "firebase/auth"; const auth = getAuth(); const provider = new GoogleAuthProvider(); // 调用登录时指定自定义重定向路径 signInWithRedirect(auth, provider, { redirectUri: "https://customdomain.com/your-post-login-page" });
注意:这个路径必须已经添加到Firebase控制台的「授权的重定向URI」列表中,否则会被Firebase拦截。
4. 用Vercel环境变量管理Firebase配置
把Firebase的配置项(包括authDomain)存入Vercel的环境变量中,避免硬编码在代码里:
- 在Vercel项目的「Settings」->「Environment Variables」里添加
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,值为你的自定义域名 - 在NextJS代码中通过环境变量读取:
const firebaseConfig = { authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, // 其他配置项 };
完成这些步骤后,你的Vercel部署应用就能正常使用自定义域名作为Firebase Auth的重定向地址了,不需要切换到Firebase托管。
内容的提问来源于stack exchange,提问作者Swapnil Srivastava
相关产品推荐
相关产品推荐

