我可以使用admin authentication api手动在firebase中创建联合用户吗?

Pha*_*ani 11 node.js firebase-authentication firebase-admin actions-on-google api-ai

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

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

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

我知道有可能创建一个电子邮件+虚拟密码帐户,但这不是我想要的.因为用户在尝试登录我的网络应用程序时注册了虚拟密码,所以会使用他们的谷歌登录功能.

如果我创建电子邮件和虚拟密码,流量不好,我将强制用户更改密码并在他们访问我的网络渠道时再次链接他们的Google帐户!

有CLI方法,我可以从文件中导入用户.如果有可能,有人可以帮助我如何在云功能中完成这项工作吗?

Pha*_*ani 0

这不是问题的完整答案

基于firebase 工具导入选项,我创建了一个精简的要点,使用它我可以触发从云函数的导入。我面临的唯一问题是我必须传递承载访问令牌才能执行操作的地方。

到目前为止,我已经短路getAccessTokenimport/api.js. 这是我需要 Firebase 团队帮助的地方,以便直接为 Firebase 管理员获取访问令牌,或者在从云功能内发出请求时绕过检查!

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

在上面的函数中,注释的代码实际上是accessToken用户在firebase import从 CLI 工具执行操作时获得的运行。作为一个命令行实用程序,询问用户获得权限是可行的,但是当在云函数中运行时,它应该是我可以想到的以下选项之一!

a) 由于云函数是在管理员权限内执行的,因此请忽略权限!b) 或提供直接从管理 SDK 获取访问令牌的方法。

要点位于 github 中我从firebase 工具项目中获取了大部分内容,并进行了一些调整以使其能够在 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"
   }
}
Run Code Online (Sandbox Code Playgroud)