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

时间:2016-12-29 09:21:58

标签: javascript firebase firebase-authentication

在我的firebase应用中,用户可以使用

登录

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

  1. 用户使用Google登录
  2. 用户转到“设置”并点击“与Slack联系”
  3. 然后应该关联用户帐户,以便他下次使用Slack或Google登录
  4. 根据文档,为了关联帐户,您可以为联盟提供商调用linkWithPopup/Redirect,或为电子邮件提供商调用auth.currentuser.link(credential)AuthCredential)。

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

1 个答案:

答案 0 :(得分:6)

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

  1. 使用slack使用自定义身份验证登录:(自定义身份验证帐户中使用的uid可能与松弛用户标识符相同)。
  2. linkWithPopup / Redirect / Credential使用Google提供程序或凭据到现有的自定义用户。
  3. 如果您坚持提议的流程,您可以执行以下操作:

    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. 松弛帐户现已链接到现有帐户。
    9. 下次用户使用Slack登录时:

      1. 将松散的OAuth凭据发送到后端。
      2. 查询slack userinfo以获取松弛标识符。
      3. 使用相应的firebase uid的松弛标识符键检查哈希映射。
      4. 使用firebase uid的Mint自定义标记,将松弛标识符添加为自定义属性。
      5. 使用客户端上的自定义令牌登录。
      6. 如果用户使用Google登录。

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