首页 > 解决方案 > 使用自定义令牌的 Firebase 身份验证错误

问题描述

我正在尝试使用KakaoTalk凭据对firebase中的用户进行身份验证。为此,我从 KakaoTalk 得到。然后尝试使用该令牌对用户进行身份验证。这是我的代码:accesstoken

      String token = await kakaoService.getAccessToken();
      await firebaseAuth.signInWithCustomToken(
        token: token,
      );

得到这样的访问令牌:nmAzFpOF9XrijP-ZoFpQbVluGZ4lLDbZxOCXIAo9c-sAAAFxrID6xA

但收到此错误:

自定义令牌格式不正确。请检查文档。[无效的断言格式。需要 3 个点分隔段。]

这里有什么问题?我错过了什么吗?

标签: flutterfirebase-authentication

解决方案


似乎返回的令牌kakaoService.getAccessToken()不是 Firebase 身份验证的有效自定义令牌。事实上,鉴于错误消息,它甚至看起来都不是 JWT。

Firebase 身份验证的自定义令牌必须具有特定格式,该格式记录在创建自定义令牌中。您通常需要按照此流程获取有效的 Firebase 身份验证令牌:

  1. 将用户登录到身份提供商(在您的情况下为 KakaoTalk)。
  2. 解码来自提供者的令牌,以获取有关用户的经过验证的信息。
  3. 使用 Firebase Authentication Admin SDK 为用户创建自定义令牌。
  4. 使用该令牌在客户端上登录 Firebase。

步骤 2 和 3 必须在受信任的环境中进行,例如您的开发机器、您控制的服务器或 Cloud Functions。


推荐阅读