2016-11-08 43 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

相關問題