node.js から Realtime Database を使用したいため、下記に従い作業を行いました。
Introduction to the Admin Database API
var admin = require("firebase-admin"); admin.database.enableLogging(true); // Fetch the service account key JSON file contents var serviceAccount = require("path/to/serviceAccountKey.json"); // Initialize the app with a service account, granting admin privileges admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://databaseName.firebaseio.com" }); // As an admin, the app has access to read and write all data, regardless of Security Rules var db = admin.database(); var ref = db.ref("restricted_access/secret_document"); ref.once("value", function(snapshot) { console.log(snapshot.val()); });
path/to/serviceAccountKey.json
にはサービスアカウント(プロジェクトのオーナー権限をもたせました)の発行を行ったページからダウンロードした秘密鍵を含む json ファイルのパスを入力。
https://databaseName.firebaseio.com
には、実際に使用するDBのURLを入力。
こちらを実行したところpermission_denied
が返って接続できません。
ログから抜粋 p:0: connection ready p:0: reportStats {"c":{"sdk.js.4-0-5":1}} p:0: {"r":1,"a":"s","b":{"c":{"sdk.js.4-0-5":1}}} p:0: {"r":2,"a":"gauth","b":{"cred":"****"}} p:0: Listen on /restricted_access/secret_document for default p:0: {"r":3,"a":"q","b":{"p":"/restricted_access/secret_document","h":""}} p:0: from server: {"r":1,"b":{"s":"ok","d":""}} c:0:0: Primary connection is healthy. p:0: from server: {"r":2,"b":{"s":"permission_denied","d":"Access denied."}} Auth token revoked: permission_denied/Access denied. `"cred":"****"`の***部分には鍵っぽいものが入っています。
Realtime Database の接続ルールはフルオープンです。
{ "rules": { ".read": true, ".write":true } }
なにかおかしな思い込みでミスっているのだと思いますがどなたかご指摘いただけないでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。