跳到内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.

providers/google

内置 Google 集成。

GoogleProfile

扩展

属性

aud

aud: string;

azp

azp: string;

email

email: string;

email_verified

email_verified: boolean;

exp

exp: number;

family_name?

optional family_name: string;

given_name

given_name: string;

hd?

optional hd: string;

iat

iat: number;

iss

iss: string;

jti?

optional jti: string;

locale?

optional locale: string;

name

name: string;

nbf?

optional nbf: number;

picture

picture: string;

sub

sub: string;

default()

default<P>(options): OAuthConfig<P>

在您的页面中添加 Google 登录。

设置

回调 URL

https://example.com/api/auth/callback/google

配置

import { Auth } from "@auth/core"
import Google from "@auth/core/providers/google"
 
const request = new Request(origin)
const response = await Auth(request, {
  providers: [
    Google({ clientId: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET }),
  ],
})

资源

注意

默认情况下,Auth.js 假设 Google 提供者基于 Open ID Connect 规范。

在创建凭据时使用的“授权重定向 URI”必须包含您的完整域名,并在回调路径中结束。例如;

  • 对于生产:https://{YOUR_DOMAIN}/api/auth/callback/google
  • 对于开发:https://127.0.0.1:3000/api/auth/callback/google
⚠️

Google 仅在用户首次登录时向应用程序提供刷新令牌。

要强制 Google 重新颁发刷新令牌,用户需要从其帐户中删除应用程序,然后重新登录:https://myaccount.google.com/permissions

或者,您也可以在 params 对象中传递选项 authorization,这将强制在登录时始终提供刷新令牌,但是这将要求所有用户在每次登录时确认他们是否希望授予您的应用程序访问权限。

如果您需要访问 Google 帐户的刷新令牌或访问令牌,并且您没有使用数据库来持久保存用户帐户,那么这可能是您需要执行的操作。

const options = {
  providers: [
    Google({
      clientId: process.env.GOOGLE_ID,
      clientSecret: process.env.GOOGLE_SECRET,
      authorization: {
        params: {
          prompt: "consent",
          access_type: "offline",
          response_type: "code"
        }
      }
    })
  ],
}
💡

Google 还将在 OAuth 配置文件中返回一个 email_verified 布尔属性。

您可以使用此属性来限制对特定域中具有已验证帐户的人员的访问。

const options = {
  ...
  callbacks: {
    async signIn({ account, profile }) {
      if (account.provider === "google") {
        return profile.email_verified && profile.email.endsWith("@example.com")
      }
      return true // Do different verification for other providers that don't have `email_verified`
    },
  }
  ...
}
💡

Google 提供者附带一个 默认配置。要覆盖您的用例的默认值,请查看 自定义内置 OAuth 提供者

免责声明 如果您认为在默认配置中发现错误,您可以 打开一个问题

Auth.js 严格遵循规范,无法对提供者对规范的任何偏差负责。您可以打开一个问题,但如果问题是不符合规范,我们可能不会寻求解决方案。您可以在 讨论 中寻求更多帮助。

类型参数

类型参数
P extends GoogleProfile

参数

参数类型
optionsOAuthUserConfig<P>

返回值

OAuthConfig<P>

Auth.js © Balázs Orbán 和团队 -2024