Firebase使用自定义令牌认证错误

问题描述 投票:0回答:1

我正在尝试验证用户在 火力基地KakaoTalk 证件。为此,我已经得到了 accesstoken 从KakaoTalk。然后尝试用该token验证用户。这是我的代码。

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

得到了这样的access token。nmAzFpOF9XrijP-ZoFpQbVluGZ4lLDbZxOCXIAo9c-sAAAFxrID6xA

但是得到这个错误。

自定义token格式不正确。请检查文档。[ Invalid assertion format. 3 dot separated segments required.]

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

flutter firebase-authentication
1个回答
2
投票

似乎token的返回方式是 kakaoService.getAccessToken() 不是Firebase认证的有效自定义令牌。事实上,从错误信息来看,它甚至不像是一个JWT。

Firebase认证的自定义令牌必须有一个特定的格式,这在 创建自定义代币. 通常情况下,你需要按照这个过程来获取Firebase认证的有效令牌。

  1. 将用户登录到身份提供者(在你的例子中是KakaoTalk)。
  2. 解码身份提供者提供的token,以获取用户的验证信息。
  3. 使用Firebase认证管理SDK为用户创建一个自定义的token。
  4. 使用该令牌在客户端登录Firebase。

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


2
投票

查看Firebase文档中关于使用自定义token的内容。https:/firebase.google.comdocsauthadmincreat-custom-tokens#create_custom_tokens_using_a_third-party_jwt_library。

Firebase需要成功地解码你的客户提交的认证令牌,然后使用它的声明来验证对你的Firebase资源的访问。因此,Firebase要求定制的令牌必须按照他们文档中阐述的规则进行格式化。(他们描述了一个非常典型的JSON Web Token)。

你从以下地方获得的访问令牌 KakaoTalk 不遵循Firebase的令牌规则,所以Firebase不知道该怎么处理它。我建议你重温一下KakaoTalk的文档,看看它是否能生成一个标准的RS256 JWT令牌,而Firebase 可以 工作。

© www.soinside.com 2019 - 2024. All rights reserved.