我正在使用 firebase/auth 包中的signInWithRedirect。从 2024 年 6 月开始,当应用程序未托管在 Firebase 上时,我们需要实现 5 个选项之一才能正常工作。我的应用程序托管在 Netlify 上。我试图使用 选项 3 - 向 firebaseapp.com 发出代理请求。
我使用Netlify边缘函数来实现代理:
export default async (request, context) => {
const url = new URL(request.url);
if (url.pathname.startsWith("/__/auth/")) {
const newUrl = new URL(request.url);
newUrl.hostname = "my-firebase-app.firebaseapp.com";
const proxyRequest = new Request(newUrl.toString(), request);
return fetch(proxyRequest);
}
return context.next();
};
export const config = { path: "/__/auth/*" };
我还使用更改的 authDomain 更新了我的 firebase 配置:
authDomain: my-netlify-app.com
当我调用signInWithRedirect时,我确实被重定向到一些谷歌页面,但它给出了这个错误:
您无法登录,因为此应用发送了无效请求。你可以 请稍后重试,或联系开发人员解决此问题。了解更多 关于此错误 如果您是此应用程序的开发人员,请参阅错误 细节。错误 400:redirect_uri_mismatch
我已经单击了链接并阅读了文档,我还访问了 Google 控制台的凭据页面,并且我明确添加了:
OAuth 2.0 客户端 ID 授权的 JavaScript 来源:https://my-netlify-app.com 授权重定向 URI:https://my-netlify-app.com/__/auth/handler
我仍然收到这个
redirect_uri_mismatch
错误:
请求详细信息:redirect_uri=https://my-netlify-app.com/__/auth/handler flowName=GeneralOAuthFlow
同时,我打算使用我不太喜欢的signInWithPopup,但如果我不更改authDomain,它就可以工作。
在授权 URI 下我添加了:
对于 javascript 起源我还添加了:
这对我有用