【问题标题】:Retrieve credential for a custom auth in firebase in order to link the custom provider在 firebase 中检索自定义身份验证的凭据以链接自定义提供程序
【发布时间】:2017-05-13 14:19:09
【问题描述】:

在我的 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) 方法?
是否有人成功管理将帐户与自定义身份验证提供程序的关联?

【问题讨论】:

    标签: javascript firebase firebase-authentication


    【解决方案1】:

    开箱即用不支持此功能。 你可以做的是以下(需要调整顺序,主要是切换顺序):

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

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

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

    用户下次使用 Slack 登录时:

    1. 将 Slack OAuth 凭据发送到后端。
    2. 查询 slack userinfo 以获取 slack 标识符。
    3. 使用 slack 标识符键检查哈希映射以获取相应的 firebase uid。
    4. 使用 firebase uid 创建自定义令牌,添加 slack 标识符作为自定义属性。
    5. 在客户端使用自定义令牌登录。

    如果用户使用 Google 登录。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2012-11-09
      • 2012-04-05
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2017-03-03
      相关资源
      最近更新 更多