我正在尝试验证用户在 火力基地 与 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.]
这里有什么问题吗?我错过了什么吗?
似乎token的返回方式是 kakaoService.getAccessToken()
不是Firebase认证的有效自定义令牌。事实上,从错误信息来看,它甚至不像是一个JWT。
Firebase认证的自定义令牌必须有一个特定的格式,这在 创建自定义代币. 通常情况下,你需要按照这个过程来获取Firebase认证的有效令牌。
步骤2和3必须在可信的环境中进行,比如你的开发机、你控制的服务器或Cloud Functions。
查看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 可以 工作。