【问题标题】:Unable to get user by email using Cloud Function for Firebase无法使用 Cloud Function for Firebase 通过电子邮件获取用户
【发布时间】:2017-07-21 17:15:52
【问题描述】:

我在 Cloud Function for Firebase 中使用 Node.js Admin SDK,我想调用 admin.auth().getUserByEmail() 方法。

因为我使用的是云函数,所以我阅读了here,我只需要调用admin.initializeApp(functions.config().firebase);,您可以在下面看到我已经完成了。

但是,当我调用 getUserByEmail()(仅在本地测试)时,我收到以下错误: 'No Firebase project was found for the provided credential.'

这是我的 index.js

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.hello = functions.https.onRequest(function (req, resp) {
  var from = req.body.sender;
  admin.auth().getUserByEmail(from)
    .then(function (userRecord) {
      // See the UserRecord reference doc for the contents of userRecord.
      console.log("Successfully fetched user data:", userRecord.toJSON());
    })
    .catch(function (error) {
      console.log("Error fetching user data:", error);
    })
});

有没有人有这方面的经验,可以告诉我我做错了什么?

【问题讨论】:

    标签: javascript firebase google-cloud-functions firebase-admin


    【解决方案1】:

    如果您使用 localy(在谷歌云功能模拟器中),管理员 sdk 将无法获得正确的配置 json。您必须使用从 firebase 控制台获取的服务帐户 json。

    但是如果你已经部署了它,你的方法就可以正常工作了。

    【讨论】:

    • 谢谢 Anand - 我认为这可能是问题所在,所以我很快尝试使用非云功能配置方法,但在尝试初始化 2 个不同的项目时遇到了不同的错误。我会更加小心地再次尝试这种方法:-)
    • 检查该链接以初始化两个应用程序。
    • 感谢 Anand 我现在使用非云函数方法进行了设置,一切正常。由于我是 Admin SDK 新手,我不知道在使用记录的方法时我是否做错了……这绝对是本地模拟器的问题。
    • 云功能其实很简单。只是初始化部分很棘手。如果您使用服务帐户方式,它将在本地和现场正常工作。一旦初始化 admin sdk 就像您的浏览器 sdk 一样。无论如何,因为您的设置没有云功能,所以没有问题 :)
    • 我喜欢 Cloud Functions,但我会在文档中标记这个本地“问题”,以免其他人浪费太多时间。对于我未来的项目,每次都会初始化服务帐户。感谢您的确认 :-)
    猜你喜欢
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多