2016-11-08 2 views
0

Информация о создании собственного customToken информации на Firebase Docs. Было бы полезно, чтобы начинающие разработчики знали, как их создавать, чтобы сортировать данные для доступа к определенным пользователям в приложении (ios-swift), например. group1 имеет конкретных пользователей, которые могут просматривать определенный раздел базы данных.Firebase Admin и пользовательские данные токена переходят на сервер

В моем случае, я запутаться в шаге 3 из «Аутентифицировать с Firebase»

  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 Docs не указывает, как это сделать.

Я установил сервер с 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 для ваших учетных данных службы, создайте файл 'js' с именем credentials.js в той же папке вашего основного проекта. В этом файле создайте переменную с именем credentials и сделайте ее равной json, которую вы загрузили в качестве «service-account.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" 

});

в общем. Причина, по которой узел не может прочитать вашу службу-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() был добавлен 7 ноября 2016 года с помощью firebase-admin версии 4.0.0. Я использовал учебник, который ссылался на более раннюю версию firebase-admin (3.0.0), и эта версия была ссылкой на мой файл package.json. Как только я ссылался на 4.0.0. Я больше не испытывал ошибки.

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

Смежные вопросы