Firebase:如何从Android和iOS验证Google登录令牌ID

时间:2018-08-02 22:22:00

标签: node.js firebase firebase-authentication google-cloud-functions google-login

我想在我的节点上验证从我的Android应用程序获得的所有令牌(Google登录名)。我首先像这样初始化firebase模块:

var admin = require('firebase-admin');
var serviceAccount = require('googlefirebase');
admin.initializeApp({
   credential: admin.credential.cert(serviceAccount),
   databaseURL: url
});

这给我一些关于DEFAULT名称的错误,我发现我需要使用以下代码:

var admin = require('firebase-admin');
var serviceAccount = require('googlefirebase');
admin.initializeApp(functions.config().firebase);

然后我意识到我需要在服务器上安装并初始化项目,所以我做到了:

firebase login
firebase init
firebase use --add project
firebase functions:config:set "google-services.json" (just the project_info data of the json that i downloaded from firebase)

现在我收到此错误:

  

错误:必须使用证书凭证初始化应用程序或设置Firebase   项目ID作为要调用的GOOGLE_CLOUD_PROJECT环境变量   verifyIdToken()

编辑开始 我打电话时收到此错误:

admin.auth().verifyIdToken(token).then(function(decodedToken) {}.catch(){};

编辑结束

我已经“初始化”了firebase(或者至少是我这样)并创建了环境变量:GOOGLE_CLOUD_PROJECT和FIREBASE_CONFIG,我一直遇到相同的错误。

那么,使Firebase正常工作的正确方法是什么?我想念什么? verifyIdToken是验证令牌的正确方法吗?我只想验证Google登录令牌。

2 个答案:

答案 0 :(得分:0)

借助Firebase的Cloud Functions,您不再需要这样初始化:

admin.initializeApp(functions.config().firebase);

您应该不使用任何参数:

admin.initializeApp();

此外,您的google-services.json文件在Cloud Functions中没有用。那只能在Android应用中使用。

答案 1 :(得分:0)

您应该具有FIREBASE_CONFIG环境变量,然后调用

// Initialize the default app
var admin = require('firebase-admin');
var app = admin.initializeApp();

该配置变量包含初始化信息,例如:

      databaseURL: 'https://databaseName.firebaseio.com',
     storageBucket: 'projectId.appspot.com',
     projectId: 'projectId'