Firebaseで作成されたアプリがあります。セキュリティルールとクライアント側のコードは、アプリを機能させるのに十分ではありません。サーバーを接続していくつかのタスクを実行する必要があります。
更新(20160611): https://firebase.google.com でプロジェクトを作成した場合、サーバーからデータベースにアクセスする手順は異なります。この回答を参照してください: Firebase 3でトークンのサーバー側の検証を行うことはまだ可能ですか?
これを行うには2つの方法があります。サーバー認証トークンを生成するか、Firebaseシークレットを使用します。
サーバートークンの生成同じ トークンジェネレーターライブラリ をカスタムログイン用に作成して、使用できるトークンを生成できますサーバ。その後、セキュリティルールからこのサーバーへの特別なアクセスを提供できます。
手順は次のとおりです。
事前に選択されたuidでトークンを生成します。 node.jsサーバーを作成している場合、コードは次のようになります。
var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator("<your-firebase-secret>");
var token = tokenGenerator.createToken(
{uid: "my-awesome-server"},
{ expires: <far_into_the_future_seconds> });
トークンを使用して、クライアントを認証します。 node.jsのコードは次のとおりです。
var ref = new Firebase("https://<your-firebase>.firebaseio.com/");
ref.authWithCustomToken(token, function(error, authData) {
...
});
サーバーの言語用のクライアントがない場合、たとえばPHPの場合、REST要求として auth
パラメーター としてトークンを使用します。
Firebase全体への読み取りアクセスを許可するこの単純なルールのように、uidで識別されるように、セキュリティルールを更新してサーバーに特別なアクセス許可を付与します。
{
"rules": {
".write": false,
".read": "auth.uid === 'my-awesome-server'"
}
}
すべてのデータにアクセスし、素晴らしいことをします。
利点
Firebaseシークレット
あなたがEdgeでの生活を楽しんでいるような開発者で、一瞬で Sudo
と入力した場合、Firebaseシークレットを直接使用して認証することもできます。
しかし、真剣に、これをしないでください。危ないです。
しない理由
Sudo
を盲目的に使用するのと同じように、それは非常に危険です。