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

时间:2017-08-18 11:13:16

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

这不是对问题的完整答案

基于firebase tools import option我已经创建了一个trimed down gist,使用它我可以从云函数触发导入。我面临的唯一故障是我要传递承载访问令牌以执行操作的地方。

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

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

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

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

要点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"
   }
}