【问题标题】:Retrieve credential for a custom auth in firebase in order to link the custom provider在 firebase 中检索自定义身份验证的凭据以链接自定义提供程序
【发布时间】:2017-05-13 14:19:09
【问题描述】:
在我的 firebase 应用中,用户可以使用
登录
我想让用户有机会链接两个帐户。所以我要打开的案例是:
- 用户使用 Google 登录
- 用户转到“设置”并单击“使用 Slack 连接”
- 然后应关联用户帐户,以便他下次可以使用 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】:
开箱即用不支持此功能。
你可以做的是以下(需要调整顺序,主要是切换顺序):
- 使用 slack 使用自定义身份验证登录:(此处自定义身份验证帐户中使用的 uid 可能与 slack 用户标识符相同)。
- linkWithPopup/Redirect/Credential 使用 Google 提供程序或现有 slack 自定义用户的凭据。
如果您坚持建议的流程,您可以执行以下操作:
- 首先使用 Google 登录(已分配 uid)。
- 使用 Slack 登录(已获得 Slack OAuth 凭据)。
- 将 Firebase ID 令牌和 slack 凭据发送到您的后端。
- 验证 Firebase ID 令牌,查询 slack userinfo 端点以获取 slack 用户数据,包括 slack 标识符。
- 保存一个以 Slack 标识符作为键、Firebase uid 作为值的哈希映射,另一个以 Firebase uid 作为键、松弛标识符作为值的哈希映射。
- 使用 firebase uid 创建自定义令牌,设置 slack 自定义属性(slack:{Slack Identifier})。
- 将自定义令牌发送到前端并 signInWithCustomToken(松弛标识符现在将在令牌中可用)
- Slack 帐户现在已链接到现有帐户。
用户下次使用 Slack 登录时:
- 将 Slack OAuth 凭据发送到后端。
- 查询 slack userinfo 以获取 slack 标识符。
- 使用 slack 标识符键检查哈希映射以获取相应的 firebase uid。
- 使用 firebase uid 创建自定义令牌,添加 slack 标识符作为自定义属性。
- 在客户端使用自定义令牌登录。
如果用户使用 Google 登录。
- 将 Firebase ID 令牌发送到后端。
- 验证 ID 令牌,使用 firebase uid 键在哈希映射中查找对应的 slack 标识符。
- 以 Firebase uid 和 slack 标识符作为自定义属性的 Mint 自定义令牌。
- 在客户端使用自定义令牌登录。