我想在下一个身份验证中使用“GoogleProvider”添加登录功能。
我完成了 google cloud 和 firebase 设置
凭证中的 OAuth 2.0 客户端 ID
应用程序域、OAuth 同意屏幕中的授权域
在 Firebase 项目设置中创建 Web 应用程序
和 [...nextauth].ts 代码如下:
import NextAuth, { NextAuthOptions } from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import KakaoProvider from "next-auth/providers/kakao"
import { FirestoreAdapter } from "@next-auth/firebase-adapter";
import { db } from "../../../firebase.config";
const authOptions: NextAuthOptions = {
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID_DEV as string,
clientSecret: process.env.GOOGLE_CLIENT_SECRET_DEV as string
})
],
secret: process.env.NEXTAUTH_SECRET,
session: {
strategy: "jwt",
maxAge: 3 * 60 * 60
},
adapter: FirestoreAdapter(db.app.options),
pages: {
signIn: '/login'
},
callbacks: {
async session({ session, user, token }) {
return session;
}
},
debug: true
}
export default NextAuth(authOptions);
该项目正在使用 Github Actions、Cloud Run、Firebase Hosting 进行部署。
它在本地运行得很好,但在生产中却不起作用。
有趣的是,它在 Cloud Run 项目服务 URL 中运行良好。
仅不适用于使用 Firebase 托管的域网页。
所以,我尝试了这些
更改 OAuth 2.0 客户端 ID 中的授权重定向 URI
在 OAuth 同意屏幕中编辑应用程序注册
登录函数中的属性callbackUrl
此问题是由 Firebase 托管引起的吗? 我怎么解决这个问题? 谢谢。
+添加
当我在 Cloud Run 中查看日志时,我发现了这些日志:
https://next-auth.js.org/errors#oauth_callback_errorchecks.state参数丢失。
错误:类型错误:checks.state参数丢失。
名称:'OAuthCallbackError'
我在使用 mongodb 的 next-js auth 中遇到同样的错误,只需刷新 mongodb 即可。