在firebase中检索自定义身份验证的凭据,以便链接自定义提供程序

Mak*_*ibo 7 javascript firebase firebase-authentication

在我的firebase应用程序中,用户可以使用登录

我想让用户有机会链接这两个帐户.所以我开的案例是:

  1. 用户使用Google登录
  2. 用户转到"设置"并点击"与Slack连接"
  3. 然后应该关联用户帐户,以便下次可以使用Slack或Google登录

根据文档,为了链接帐户,您可以呼叫linkWithPopup/Redirect联盟提供商或auth.currentuser.link(credential)电子邮件提供商(https://firebase.google.com/docs/auth/web/account-linking).

我现在想知道我是否能以某种方式从我的自定义Slack身份验证中获取AuthCredential并使用上述link(credential)方法?
是否有人成功管理将帐户链接到自定义身份验证提供程序?

boj*_*eil 6

开箱即用不支持此功能.您可以做的是以下(需要调整订单,主要是切换订单):

  1. 使用slack使用自定义身份验证登录:(此处在自定义身份验证帐户中使用的uid可能与松弛用户标识符相同).
  2. linkWithPopup/Redirect/Credential使用Google提供程序或凭据到现有的slack自定义用户.

如果您坚持建议的流程,您可以执行以下操作:

  1. 首先使用Google登录(已分配uid).
  2. 使用Slack登录(获得松弛OAuth凭证).
  3. 将Firebase ID令牌和冗余凭证发送到您的后端.
  4. 验证Firebase ID令牌,查询slack userinfo端点以获取松弛的用户数据,包括松弛标识符.
  5. 使用Slack标识符作为键保存哈希映射,将Firebase uid保存为值,另一个哈希映射使用firebase uid作为键,松弛标识符作为值.
  6. 使用firebase uid设置自定义标记,设置松弛自定义属性(slack:{Slack Identifier}).
  7. 将自定义令牌发送到前端并且signInWithCustomToken(现在可以在令牌中使用松弛标识符)
  8. 松弛帐户现在链接到现有帐户.

用户下次使用Slack登录时:

  1. 将松弛的OAuth凭证发送到后端.
  2. 查询slack userinfo获取slack标识符.
  3. 使用对应的firebase uid的slack标识符密钥检查哈希映射.
  4. 使用firebase uid的Mint自定义标记,添加松弛标识符作为自定义属性.
  5. 使用客户端上的自定义令牌登录.

如果用户使用Google登录.

  1. 将firebase ID令牌发送到后端.
  2. 验证ID令牌,使用firebase uid键在哈希映射中查找相应的松弛标识符.
  3. 使用Firebase uid和slack标识符作为自定义属性的Mint自定义标记.
  4. 使用客户端上的自定义令牌登录.