跳至內容
從 NextAuth.js v4 遷移?閱讀 我們的遷移指南.
API 參考@auth/firebase-adapter

@auth/firebase-adapter

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

安裝

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 呼叫的服務使用 (例如 authmessagingprojectManagement)。

Realtime Database 和 Firestore 使用其他方式與後端伺服器通訊,因此它們不使用這個 HTTP Agent。 Credential 實例也不使用這個 HTTP Agent,而是支援在對應的工廠方法中指定 HTTP Agent。

繼承自

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

返回

配接器 (Adapter)


initFirestore()

initFirestore(options): Firestore

此為一個實用函式,有助於確保在無伺服器環境中不會發生重複應用程式初始化的問題。如果沒有傳遞任何參數,它將使用 GOOGLE_APPLICATION_CREDENTIALS 環境變數來初始化 Firestore 實例。

參數

參數類型
optionsAppOptions & { 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