@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
サーバーレス環境で重複したアプリ初期化の問題がないことを確認するのに役立つユーティリティ関数です。パラメータが渡されない場合、Firestoreインスタンスの初期化に`GOOGLE_APPLICATION_CREDENTIALS
`環境変数を使用します。
パラメータ
パラメータ | 型 |
---|---|
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,
})
})