跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.
API 参考@auth/firebase-adapter

@auth/firebase-adapter

Auth.js / NextAuth.js 的官方 **Firebase** 适配器,使用 Firebase Admin SDKFirestoreFirestore logo

安装

npm install @auth/firebase-adapter firebase-admin

FirebaseAdapterConfig

配置 Firebase 适配器。

扩展

  • AppOptions

属性

collections?

optional collections: {
  accounts: string;
  sessions: string;
  users: string;
  verificationTokens: string;
};

如果您已经在 Firestore 数据库中拥有其中一个默认集合,请使用此选项。

示例
 // This will use the collection name "authjs_users" instead of the default "users"
 adapter: FirestoreAdapter({ collections: { users: "authjs_users" } })
 // ...
accounts?
optional accounts: string;
sessions?
optional sessions: string;
users?
optional users: string;
verificationTokens?
optional verificationTokens: string;

credential?

optional credential: Credential;

用于对 Admin SDK 进行身份验证的 firebase-admin.app#Credential 对象。

请参阅 初始化 SDK 以获取详细的文档和代码示例。

继承自

AppOptions.credential

databaseAuthVariableOverride?

optional databaseAuthVariableOverride: null | object;

在 Admin SDK 读取或写入实时数据库时,用作您实时数据库规则中 auth 变量的对象。这使您可以从其默认的完全读取和写入权限中缩小 Admin SDK 的范围。

您可以传递 null 来充当未经身份验证的客户端。

请参阅 使用有限权限进行身份验证 以获取详细的文档和代码示例。

继承自

AppOptions.databaseAuthVariableOverride

databaseURL?

optional databaseURL: string;

要从中读取和写入数据的实时数据库的 URL。

继承自

AppOptions.databaseURL

firestore?

optional firestore: Firestore;

httpAgent?

optional httpAgent: Agent;

在进行传出 HTTP 调用时要使用的 HTTP 代理。此代理实例由所有进行 REST 调用的服务使用(例如 authmessagingprojectManagement)。

实时数据库和 Firestore 使用其他方法与后端服务器通信,因此它们不使用此 HTTP 代理。 Credential 实例也不使用此 HTTP 代理,而是支持在相应的工厂方法中指定 HTTP 代理。

继承自

AppOptions.httpAgent

name?

optional name: string;

传递给 initializeApp() 的应用程序名称。

namingStrategy?

optional namingStrategy: "snake_case" | "default";

如果您在数据库中混合使用 snake_casecamelCase 字段名称,请使用此选项。传递 snake_case 会将所有字段和集合名称转换为 snake_case。例如,集合 verificationTokens 将变为 verification_tokens,字段如 emailVerified 将变为 email_verified

示例
 // This will convert all field and collection names to snake_case
 adapter: FirestoreAdapter({ namingStrategy: "snake_case" })
 // ...
})

projectId?

optional projectId: string;

与应用程序关联的 Google Cloud 项目的 ID。

继承自

AppOptions.projectId

serviceAccountId?

optional serviceAccountId: string;

用于签署自定义令牌的服务帐户的 ID。这可以在服务帐户 JSON 文件的 client_email 字段中找到。

继承自

AppOptions.serviceAccountId

storageBucket?

optional storageBucket: string;

用于存储应用程序数据的 Google Cloud Storage 存储桶的名称。仅使用存储桶名称,不带任何前缀或附加内容(不要在名称前添加“gs://”)。

继承自

AppOptions.storageBucket


FirestoreAdapter()

FirestoreAdapter(config?): Adapter

参数

参数类型
config?FirebaseAdapterConfig | Firestore

返回值

适配器


initFirestore()

initFirestore(options): Firestore

这是一个帮助确保在无服务器环境中没有重复应用程序初始化问题的实用程序函数。如果没有传入参数,它将使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量来初始化 Firestore 实例。

参数

参数类型
选项AppOptions & { name: string; }

返回值

Firestore

示例

lib/firestore.ts
import { initFirestore } from "@auth/firebase-adapter"
import { cert } from "firebase-admin/app"
 
export const firestore = initFirestore({
 credential: cert({
   projectId: process.env.FIREBASE_PROJECT_ID,
   clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
   privateKey: process.env.FIREBASE_PRIVATE_KEY,
 })
})
Auth.js © Balázs Orbán 和团队 -2024