@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 從 Realtime Database 讀取或寫入時,要在您的 Realtime Database 規則中用作 auth 變數的物件。這允許您從其預設的完整讀取和寫入權限範圍縮小 Admin SDK 的範圍。
您可以傳遞 null
來作為未驗證的客戶端。
請參閱 使用有限權限進行驗證 以取得詳細文件和程式碼範例。
繼承自
AppOptions.databaseAuthVariableOverride
databaseURL?
optional databaseURL: string;
要從中讀取和寫入資料的 Realtime Database 的 URL。
繼承自
AppOptions.databaseURL
firestore?
optional firestore: Firestore;
httpAgent?
optional httpAgent: Agent;
在進行傳出 HTTP 呼叫時要使用的 HTTP Agent。這個 Agent 實例會被所有發出 REST 呼叫的服務使用 (例如 auth
、messaging
、projectManagement
)。
Realtime Database 和 Firestore 使用其他方式與後端伺服器通訊,因此它們不使用這個 HTTP Agent。 Credential
實例也不使用這個 HTTP Agent,而是支援在對應的工廠方法中指定 HTTP Agent。
繼承自
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 實例。
參數
參數 | 類型 |
---|---|
options | 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,
})
})