You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next-Auth谷歌登录报错:非首页触发TypeError问题求助

问题描述

基于Next-Auth实现谷歌账号登录功能,首页执行登录、登出操作均正常,但在其他页面尝试登录时触发如下错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type function. Received an instance of Object

使用的signIn和signOut方法:

await signIn(provider.id, {callbackUrl: "/"})
await signOut({callbackUrl: "/"})

谷歌提供商配置:

GoogleProvider({
  clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID,
  clientSecret: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_SECRET,
  authorization: {
    params: {
      prompt: 'consent',
      access_type: 'offline',
      response_type: 'code',
    },
  },
}),

已在NextAuth配置中设置:

secret: process.env.NEXTAUTH_SECRET
解决方案
  • 确认signIn参数类型:检查其他页面调用signIn时,第一个参数是否为字符串类型的提供商ID(如"google")。若误传provider对象而非provider.id,会直接导致参数类型错误。
  • 区分客户端/服务器组件:确保调用signIn/signOut的组件是客户端组件(Next.js App Router需添加'use client'指令),服务器组件中调用NextAuth客户端方法会触发异常。
  • 移除冗余的response_type参数:谷歌OAuth2默认response_type为code,手动指定该参数可能引发流程冲突,尝试从谷歌提供商配置的authorization.params中删除response_type: 'code'后重新测试。
  • 校验环境变量加载:确认NEXTAUTH_SECRET在所有页面的运行环境中均正确加载,部分页面可能因环境变量未注入导致认证逻辑异常。
  • 检查NextAuth版本兼容性:若使用NextAuth v5,signIn的参数格式有变化(需传入provider对象而非ID),确认你的版本与调用方式匹配。

内容的提问来源于stack exchange,提问作者tcetin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:02:08