web-dev-qa-db-ja.com

Firebaseは管理者として認証します

Firebaseの完全な読み取り/書き込みアクセスのためにFirebaseの管理者としてFirebaseで認証できる方法はありますか(すでにその一部を保護するセキュリティルールがあります)、または何らかの方法で特定のパスワード/キーを提供するなど、完全なファイアベース。

これを行うための標準的な方法または推奨される方法はありますか?

35
Patrick DeVivo

「最新」のドキュメントについてはこちらをご覧ください

authWithCustomTokenはsignInWithCustomTokenになりました(firebaseバージョン3.x)

ドキュメントの例:

firebase.auth().signInWithCustomToken(token).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    if (errorCode === 'auth/invalid-custom-token') {
        alert('The token you provided is not valid.');
    } else {
        console.error(error);
    }
});
3
BonifatiusK

Andrewの答えは、クライアント側のコードの外部で認証している場合にのみ機能します(そうでない場合は、MY_SECRET明らかに)。私のような多くの人がFirebaseを使用してサーバーコードを回避しているため、別の答えがあります。

ほとんどのfirebaseアプリでは、単純なログイン「auth」オブジェクト(電子メールとパスワードのみを保存する)に加えて、おそらく「Users」オブジェクトがあります。 「Users」オブジェクトの各$ userに「isAdmin」または「isModerator」(または必要なもの)を追加できます。

そして、ルールは次のようになります(auth.idが$ userキーと一致すると仮定します):

{
  "rules": {
    "someObject": {
      ".write": "root.child('Users').child(auth.uid).child('isAdmin').val() == true"
    }
  }
}
50
Kyle

はいあります。認証トークンの代わりにFirebase Secretを使用して認証する必要があります。すなわち。

firebaseRef.auth(MY_SECRET);

Forgeの認証セクションで秘密を見つけることができます。

17
Andrew Lee

ドキュメントによるfirebaseRef.authWithCustomTokenを使用する必要があります。

例;

firebaseRef.authWithCustomToken(FIREBASE_SECRET, function(error, authData) {
  if(!error) {
    // You are authenticated
  }
});

firebaseRef.authは非推奨になりました。代わりにfirebaseRef.authWithCustomTokenを使用してください。

15
Matt