我有一个使用firebase构建的web应用程序。在我的web应用中,我有google,firebase,twitter的注册/登录功能。
现在,我想将其与我的api.ai代理集成,并有一个无缝的帐户链接。因此,用户将从移动设备使用他们的googel / assistant应用程序连接到我的代理。在这个阶段,我将有谷歌帐户Id,谷歌电子邮件,用户名。
如果用户已经存在,我可以发送我的代理所需的令牌。但如果用户是新用户,我希望在我的firebase数据库中创建帐户。我找不到在firebase中手动创建联合帐户的可能性(从nodejs应用程序/云函数)!
我知道create a email + dummy password account是有可能的,但这不是我想要的。因为用户在尝试登录我的web应用程序时使用虚拟密码注册,因此会使用他们的google登录功能。
如果我创建电子邮件和虚拟密码,流程不好,我不得不迫使用户更改密码和链接他们的谷歌帐户再次来到我的网络渠道!
有一种命令行界面方法,我可以使用import users from the file。如果这是一种可能性,请有人告诉我如何在云函数中完成这项工作?
发布于 2017-12-11 14:57:01
这不是问题的完整答案
基于firebase tools import option,我创建了一个精简的gist,使用它我可以从云函数触发导入。我面临的唯一问题是我必须传递用于执行操作的持有者访问令牌。
到目前为止,我已经缩短了import/api.js
中的getAccessToken
方法。在这里,我需要Firebase团队的帮助,以便直接为firebase管理员获取访问令牌,或者在云函数中发出请求时绕过检查!
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获取访问令牌的方法。
要点是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"
}
}
https://stackoverflow.com/questions/45755292
复制相似问题