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

使用Prisma Adapter+NextAuth谷歌登录注册用户报错求助

解决Prisma Adapter + NextAuth谷歌登录时的PrismaClientValidationError问题

问题概述

使用Prisma Adapter搭配NextAuth及谷歌登录提供商,向MongoDB注册新用户时触发PrismaClientValidationError,错误信息显示调用prisma.account.findUnique()时传入了未知参数provider_providerAccountId,系统建议使用providerId_providerAccountId。

解决方案

1. 修正Prisma Schema的Account模型字段(核心修复)

NextAuth的Prisma Adapter默认期望Account模型使用provider字段而非providerType,且联合唯一约束需匹配Adapter的查询逻辑。修改你的Account模型如下:

model Account {
  id                 String     @id @default(auto()) @map("_id") @db.ObjectId
  provider           String     // 替换原providerType字段为provider
  providerId         String
  providerAccountId  String
  refreshToken       String?
  accessToken        String?
  accessTokenExpires DateTime?
  createdAt          DateTime  @default(now())
  updatedAt          DateTime  @updatedAt
  userId             String     @db.ObjectId
  user               User       @relation(fields: [userId], references: [id])

  @@unique([provider, providerAccountId]) // 调整联合唯一约束为provider + providerAccountId
}

原因:Adapter在查询用户第三方账号时,会默认以provider和providerAccountId作为联合查询条件,原Schema中的providerType字段导致Adapter生成了错误的查询参数provider_providerAccountId。

2. 同步数据库并更新Prisma Client

修改Schema后,执行以下命令确保数据库结构与Prisma Client定义一致:

npx prisma generate
npx prisma db push

3. 验证版本兼容性(可选)

确保next-auth与@next-auth/prisma-adapter版本匹配,避免因版本差异导致的字段不兼容问题。可以查看项目package.json中的版本号,若存在大版本差异,建议升级到最新兼容版本。

4. 简化配置排查(可选)

若问题仍存在,暂时注释自定义JWT配置,排除自定义逻辑的干扰:

export const authOptions = {
  secret: process.env.NEXTAUTH_SECRET,
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  adapter: PrismaAdapter(prisma),
  // 暂时注释自定义JWT配置,先验证基础流程
  // jwt: {
  //   async encode({ secret, token }) {
  //     return jwt.sign(token, secret);
  //   },
  //   async decode({ secret, token }) {
  //     return jwt.verify(token, secret);
  //   },
  // },
};

验证

完成上述操作后,重启Next.js应用,尝试通过谷歌登录注册新用户,检查是否仍出现参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:23:17