web-dev-qa-db-ja.com

firebase admin sdkを使用してすべてのユーザーをリストする方法

Firebase admin sdkを使用しているすべてのユーザーを一覧表示する方法はありますか?ドキュメントには、uidまたは電子メールによる1人のユーザーの取得のみが示されています。

11
vincent nyanga

Update@Webpが答えで言うように、isAdmin SDKですべてのユーザーを一覧表示するAPI

元の答え:

Firebase Admin SDKからユーザーのリストを取得するためのパブリックAPIはありません。

このシナリオに対処する一般的な方法は、関連するユーザー情報のリストをFirebaseデータベースに保持することです。詳しくは、元の質問をご覧ください。 Firebaseのシンプルなユーザー名とパスワード認証を使用している場合、ユーザーのリストを返すにはどうすればよいですか

9

最新の firebase-admin sdk(現在のバージョン5.4.2)には、それを行うlistUsers AP​​Iがあります。例は here です。

例に追加することの1つは、nextPageTokenを省略するか、有効なユーザーIDである必要があります。 (IMO、例でもAPIドキュメントでも明白ではありません。)

8
webp

管理SDKで提供されているauth().listUsers()メソッドを使用できます。詳細なサンプルコードはここにあります。 Firebase Admin SDKドキュメント

4
sahanj

これは適切なソリューションではありませんが、Firebase CLIを使用してユーザーデータをエクスポートし、アプリケーションと統合できます。

auth:export

firebase auth:export account_file --format = file_format

https://firebase.google.com/docs/cli/auth

3
Charles Silva

2020年3月、ドキュメンテーションとさまざまな投稿との多くの戦いの後、私は次の作品を見つけました。

const admin = require("firebase-admin");
const serviceAccount = require('./serviceAccount.json'); // see notes below about this.

const listAllUsers = () => {

    const app = admin.initializeApp({
        databaseURL: 'https://your-project-name.firebaseio.com',
        credential: admin.credential.cert(serviceAccount) <-- see notes below about this
    });

    app.auth().listUsers(1000) // lists up to 1000 users
        .then((listUsersResult) => {

            let users = JSON.stringify(listUsersResult);

            const date = new Date();
            const day = date.getDate();
            const month = date.getMonth() + 1;

            fs.writeFileSync(__dirname + `/../my-backups/authentication-backup_${day}_${month}_2020.json`, users);
        })
        .catch(function (error) {
            console.log('Oh no! Firebase listUsers Error:', error);
        });
}

re serviceAccount.json

これは、react-firebaseやフロントエンドでnpm firebaseモジュールなどを使用するときに渡す通常のFirebase構成とは異なります。

サーバー側でCRUD権限を取得するには、次のものが必要なようです。

{
  "type": "service_account",
  "project_id": "my-project-id",
  "private_key_id": "xxxxxxxxxxxxxxxxxxx",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMxxxxxxxxxxxxxxzuUA=\n-----END PRIVATE KEY-----\n",
  "client_email": "firebase-adminsdk-em4gz@my-project-name-email-thing.iam.gserviceaccount.com",
  "client_id": "0000000000000000000",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-em4gz%40my-proj-name.iam.gserviceaccount.com"
}

まだ生成していない場合は、次のようにして取得しました。

Firebaseコンソール=>プロジェクト設定=>サービスアカウント=>新しい秘密鍵の生成

0
NewbieAid