next-auth:为什么仅在生产中出现“OAuthCallback”错误?

问题描述 投票:0回答:1

我想在下一个身份验证中使用“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'

next.js firebase-hosting google-cloud-run next-auth
1个回答
0
投票

我在使用 mongodb 的 next-js auth 中遇到同样的错误,只需刷新 mongodb 即可。

© www.soinside.com 2019 - 2024. All rights reserved.