【问题标题】:Firebase not accepting JWT acquired from Google Identity Platform's REST API: 'The custom token format is incorrect.'Firebase 不接受从 Google Identity Platform 的 REST API 获取的 JWT:“自定义令牌格式不正确。”
【发布时间】:2021-06-19 03:31:46
【问题描述】:

我正在尝试在我的 Flutter 项目中启用多因素身份验证,该项目仅针对 Web 平台。据我了解,最新版本的 FlutterFire SDK 不支持 MFA。这就是我尝试使用Google Identity Platform APIs 将功能添加到我的应用程序的原因。

我已经可以从 REST API 获取令牌,但是在将其传递给 signInWithCustomToken() 方法时,我总是收到此错误:'自定义令牌格式不正确...'

这是我尝试让用户登录的方式:

  1. 使用http package 发布到https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword
  2. 通过发布到 https://identitytoolkit.googleapis.com/v2/accounts/mfaSignIn:start 来启动 MFA
  3. 从发送到用户手机号的短信中获取短信验证码。
  4. 发帖到https://cloud.google.com/identity-platform/docs/reference/rest/v2/accounts.mfaSignIn/finalize 带有短信验证码。
  5. 从响应正文中获取idToken
  6. 将获取的idToken 传递给FirebaseAuth.signInWithCustomToken() 方法。

查看这个 Firebase 文档,我从 GIP REST API 获得的令牌的格式似乎不同。

我可以做些什么来让 Firebase SDK 接受我从 Google Identity Platform REST API 获得的令牌?

【问题讨论】:

    标签: firebase-authentication flutter-web google-identity


    【解决方案1】:

    Firebase signInWithCustomToken() 方法采用 a token generated by the Admin SDK,而不是 Google 身份令牌。

    GCIP (Google Cloud Identity Platform) 返回的令牌与 Firebase 使用的 Auth ID 令牌相同。调用finalizeMfa 后,您实际上已经登录了 Firebase,如果您开始使用 SDK,您会发现它此时无需任何转换即可工作。

    【讨论】:

    • 这是否意味着 FlutterFire SDK 会自动识别有登录用户,即使登录过程是使用 REST API 进行的?
    • 如果没有,我如何让 FlutterFire 知道我已经让用户使用 GCIP REST API 登录?有可能吗?
    • 您为什么要这样做而不是仅仅使用 SDK?从您要解决的用例开始,这样我们就不必玩旋转木马了:D 见XY problem
    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 2016-12-04
    • 2017-02-16
    • 1970-01-01
    • 2020-10-24
    • 2018-10-16
    • 2021-05-22
    • 2016-09-25
    相关资源
    最近更新 更多