2016-11-07 63 views
3

我想在node.js中使用火力地堡无效但我每次重新启动服务器时,我收到以下错误:火力警告:提供身份验证凭据

FIREBASE WARNING: Provided authentication credentials are invalid. This usually indicates your FirebaseApp instance was not initialized correctly. Make sure your apiKey and databaseURL match the values provided for your app at https://console.firebase.google.com/ , or if you're using a service account, make sure it's authorized to access the specified databaseURL and is from the correct project.

以下是我index.js:_

var express = require('express'); 
 
var router = express.Router(); 
 
var mongoose=require('mongoose'); 
 
var admin=mongoose.model('admin'); 
 

 

 
var firebase = require("firebase"); 
 

 
// Initialize the app with no authentication 
 
firebase.initializeApp({ 
 
\t serviceAccount: { 
 
    projectId: "...", 
 
    clientEmail: "...", 
 
    privateKey: "-----BEGIN PRIVATE KEY-----...", 
 
    }, 
 

 
     databaseURL: "..." 
 
}); 
 

 
console.log("sfsaf") 
 

 
// The app only has access to public data as defined in the Security Rules 
 
\t \t \t var db = firebase.database(); 
 
\t \t \t var ref = db.ref("unitalk-b9145"); 
 
\t \t \t var messagesRef = ref.child("messages"); 
 
\t \t \t 
 
\t \t \t messagesRef.push({ 
 
\t \t \t \t name:"Rupali", 
 
\t \t \t \t post:"Demo test of firebase" 
 
\t \t \t });

虽然我已经检查服务帐户和databaseURl的路径.. P租赁帮助..

回答

1

您无法使用“firabase”包使用服务帐户登录。您需要为此使用“firabase-admin”包。你可以在这里找到详细的信息(https://firebase.google.com/docs/database/admin/start)。

更新:2016年11月8日

去:https://console.firebase.google.com

要使用火力地堡管理软件开发工具包,你需要一个火力地堡项目,服务帐户与火力地堡服务进行通信,并配置文件与您的服务帐户的凭据。

  1. 导航到项目设置 页面的服务帐户选项卡。
  2. 选择您的Firebase项目。如果您还没有,请点击创建新项目按钮 。如果您已有与您的应用关联的现有 Google项目,请点击导入Google项目 。
  3. 单击“服务帐户”选项卡的 Firebase Admin SDK部分底部的生成新私钥按钮。
  4. 单击按钮后,将下载包含您的服务 帐户凭证的JSON文件。你需要这个到 在下一步中初始化SDK。

示例代码;

var admin = require("firebase-admin"); 

var serviceAccount = require("path/to/serviceAccountKey.json"); 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com" 
}); 
+0

说明@哈利勒 - 我有包括“firabase管理员与项目有关的角色管理“用以下代码打包并更新。 ** admin.initializeApp({ \t凭证:admin.credential.cert({ 专案编号: “unitalk-b9145”, clientEmail的:“[email protected]。COM”, 专用密钥: “----- BEGIN PRIVATE ---” }), databaseURL: “https://unitalk-b9145.firsebaseio.com/” }); ** – Rupali

+0

但是,让下面的错误 - 无法读取未定义的属性'cert' – Rupali

+0

我已经完成了上面提到的上述4个点并更新了以下代码- var firebase = require(“firebase”); var admin = require(“firebase-admin”) ; 变种serviceAccount =需要( “serviceAccountKey.json”); admin.initializeApp({ 凭证:admin.credential.cert(serviceAccount) databaseURL:“ .firebaseio.com /“ }); – Rupali

0

您正在使用要求(“火力”)模块,以u需要以下几件事:

var config = { 
    apiKey: " [your api key]", 
    authDomain: "[projectname].firebaseapp.com", 
    databaseURL: "https://[projectname].firebaseio.com/", 
    storageBucket: "[projectname].appspot.com", 
    messagingSenderId: "[message id]", 
}; 

firebase.initializeApp(config); 

如果你想使用要求(“火力管理员”),那么你必须配置 serviceAccountKey.json(下载文件)文件... 我能够成功地与firebase连接。

+0

var firebase = require('firebase'); var serviceAccount = require(“./ serviceAccountKey.json”); FirebaseAdmin.initializeApp({ }凭证:FirebaseAdmin.credential.cert(serviceAccount), databaseURL:“https://nodewithfirebase.firebaseio.com/” }); app.get('/',function(req,res){0} FirebaseAdmin.database()。ref('/ users')。set({username:“test”, email:“test @ mail。 com“ }); res.send(”firebase app“); }); – Pooja

相关问题