node.js - 我可以使用管理员身份验证 API 在 Firebase 中手动创建联合用户吗?

标签 node.js firebase-authentication actions-on-google firebase-admin api-ai

我有一个使用 firebase 构建的 Web 应用程序。在我的网络应用程序中,我有 google、firebase、twitter 注册/登录功能。

现在我想将它与我的 api.ai 代理集成并进行无缝帐户链接。因此,用户将使用移动设备上的 googel Home/assistant 应用程序连接到我的代理。在这个阶段,我将拥有谷歌帐户 ID、谷歌电子邮件、用户名。

如果用户已经在场,我可以发送我的代理所需的 token 。但如果用户是新用户,我想在我的 firebase 数据库中创建该帐户。我找不到在 firebase 中手动创建联合帐户的可能性(来自 nodejs 应用程序/云功能)!

我知道有可能 create a email + dummy password account但这不是我要找的。因为用户在尝试登录我的网络应用程序时使用虚拟密码注册,所以会使用他们的谷歌登录功能。

如果我创建电子邮件和虚拟密码,则流程不好,当用户访问我的网络 channel 时,我必须强制用户更改密码并再次链接他们的谷歌帐户!

有CLI方法,我可以import users from the file .如果这是一种可能性,有人可以帮助我如何在云功能中完成这项工作吗?

最佳答案

这不是问题的完整答案

基于 firebase tools import option我创建了一个精简的要点,使用它我可以触发从云功能导入。我面临的唯一故障是我必须传递承载访问 token 以执行操作的地方。

截至目前,我已将 import/api.js 中的 getAccessToken 方法短路。这是我需要 Firebase 团队帮助的地方,以便直接为 Firebase 管理员获取访问 token ,或者在从云功能中发出请求时绕过检查!

getAccessToken: function() {
    return Promise.resolve({access_token: accessToken});
    // return accessToken ? RSVP.resolve({access_token: accessToken}) : require('./auth').getAccessToken(refreshToken, commandScopes);
  },

在上面的函数中,注释代码实际上是获取用户在从 CLI 工具执行 firebase import 时获得的正在运行的 accessToken。作为一个命令行实用程序,要求用户获得许可是可行的,但是当在云函数中运行时,它应该是我可以考虑的以下选项之一!

a) 由于云功能在管理员权限内执行,请忽略权限! b) 或提供直接从管理 SDK 获取访问 token 的方法。

要点is present in here in github .我从 firebase tools project 中获取了大部分内容并进行了一些调整以使其能够在 cloudFunctions 中工作。我试图从 firebase-tools 中引入尽可能少的代码。

当我运行它时,我遇到的错误位于第 35 行 lib/import/api.js:

<<< HTTP RESPONSE BODY 
{  
   "error":{  
      "errors":[  
         {  
            "domain":"global",
            "reason":"authError",
            "message":"Invalid Credentials",
            "locationType":"header",
            "location":"Authorization"
         }
      ],
      "code":401,
      "message":"Invalid Credentials"
   }
}

关于node.js - 我可以使用管理员身份验证 API 在 Firebase 中手动创建联合用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755292/

相关文章:

android - 在 Android 上运行 Apps 脚本?

actions-on-google - 验证 Google Conversation v3 API 的 webhook 请求签名

actions-on-google - 智能家居和报告状态 : what happens if the current known state is not in sync with the reality?

使用 Passport 和 typescript : cannot find req. 用户的 Node.js 身份验证

node.js - Amazon Lex 机器人 - 回复您好

html - 如何触发jade/pug中的新行?

android - 火力地堡 10.0。 : InternalFirebaseAuth. FIREBASE_AUTH_API 在此设备上不可用

node.js - 如何获得 "should.be.false"语法通过 jslint?

firebase - Flutter Firebase Auth 错误.createUserWithEmailAndPassword : getGoogleApiForMethod() returned Gms: com. google.firebase.auth.api.internal.zzao@fb1556c

actions-on-google - 在要求用户登录之前,谷歌首页检查登录状态