コンテンツへスキップ
NextAuth.js v4からの移行?こちらを ご覧ください.
APIリファレンス@auth/firebase-adapter

@auth/firebase-adapter

Auth.js / NextAuth.js の公式 **Firebase** アダプター。Firebase Admin SDKFirestore を使用します。 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呼び出しを行うすべてのサービス(例:authmessagingprojectManagement)で使用されます。

リアルタイムデータベースと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`環境変数を使用します。

パラメータ

パラメータ
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 and Team -2024