2016-11-08 13 views
0

关于在​​上创建自己的customToken的信息不多。初学者开发人员知道如何创建它们以排序数据以供应用中的特定用户访问(ios-swift)将是有帮助的,例如, group1有特定的用户可以查看数据库的特定部分。Firebase管理员和自定义令牌数据传递到服务器

在我的情况,我得到失去了在第3步,从“与火力地堡验证”

  1. When users sign into your app, send their sign-in credentials (for example, their username and password) to your authentication server. Your server checks the credentials and returns a custom token if they are valid.

https://firebase.google.com/docs/auth/ios/custom-auth

我不确定发送的登录凭据,到我的服务器,在那里我将创建一个自定义令牌并将其发回。但我该怎么做呢? Firebase文档未指定方式。

我已经设置了服务器node.js用下面的代码:

var firebase = require('firebase'); 
var admin = require('firebase-admin'); 
var FirebaseTokenGenerator = require("firebase-token-generator"); 
var path = require('path'); 
var servAcc = '/Users/myUserName/Desktop/nodeClient/service-account.json'; 

var tokenGenerator = new FirebaseTokenGenerator("firebase-secret"); 
var token = tokenGenerator.createToken({ 
uid: "clientId", groupId: "group1", managerId:"MG1" 
}); 

    firebase.initializeApp({ 

     serviceAccount: path.resolve(__dirname, '/Users/myUserName/Desktop/nodeClient/service-account.json'), 
     databaseURL: "https://<app-name>.firebaseio.com/", 
     databaseAuthVariableOverride: { 
     uid: "clientId" 
     } 

    }) 

    admin.initializeApp({ 
     credential: admin.credential.cert(servAcc), 
     databaseURL: "https://apos-accentit.firebaseio.com/" 
    }); 

就在admin.credential.cert(servAcc),我在终端使用nodemon得到一个错误。

Cannot read property of 'cert' undefined 

我应该怎么做?

回答

0

如果您已经为您的服务凭证下载了json,请在您的主项目的同一文件夹中创建一个名为credentials.js的'js'文件。在这个文件中创建一个名为credentials的变量,并使其等于您已经下载为'service-account.json'的json;也不要忘记它在你的文件的最后导出:

module.exports = credentials; 

保存此文件,并在顶端的主index.js文件,导入新创建的文件命名为credentials.js:

var serviceAccount = require('./credentials.js') 

现在使用这个变量作为您的凭证。在admin.initializedApp里面应该看起来像这样:

admin.initializeApp({ 
credential: admin.credential.cert(serviceAccount), 
databaseURL: "https://<NAME OF YOUR DATABASE>.firebaseio.com" 

});

简而言之。节点无法读取您的service-account.json的原因是文件扩展名不能被节点读取。我有同样的问题,并为我修复它

+0

我做了你所提到的一切,我仍然得到同样的错误。 – Christian

+0

然后这个问题可能在你的代码的其他地方,有很多时候你会抛出一个错误,但这并不意味着抛出的错误就是你出错的地方。我建议你把你的代码分解成几块,看看你出错的地方。我会从一些简单的事情开始: –

+0

var admin = require('firebase-admin'); var serviceAccount = require('./ credentials.js'); admin.initializeApp({credential:admin.credential。cert(serviceAccount), databaseURL:“https://cohesive-79cd9.firebaseio.com” }); console.log('Application initiliazed'); –

1

我通过更新firebase-admin解决了这个问题。显然,新的admin.credential.cert()方法于2016年11月7日添加了firebase-admin版本4.0.0。我使用的是一个引用了旧版本firebase-admin(3.0.0)的教程,该版本就是我的package.json文件引用的内容。一旦我参考了4.0.0。我不再遇到错误。

https://firebase.google.com/support/release-notes/admin/node

相关问题