@auth/firebase-adapter
Auth.js / NextAuth.js 的官方 **Firebase** 适配器,使用 Firebase Admin SDK 和 Firestore。
安装
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 调用的服务使用(例如 auth
、messaging
、projectManagement
)。
实时数据库和 Firestore 使用其他方法与后端服务器通信,因此它们不使用此 HTTP 代理。 Credential
实例也不使用此 HTTP 代理,而是支持在相应的工厂方法中指定 HTTP 代理。
继承自
AppOptions.httpAgent
name?
optional name: string;
传递给 initializeApp()
的应用程序名称。
namingStrategy?
optional namingStrategy: "snake_case" | "default";
如果您在数据库中混合使用 snake_case
和 camelCase
字段名称,请使用此选项。传递 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
示例
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,
})
})