我正在尝试使用 KakaoTalk 凭据在 firebase 中对用户进行身份验证。为此,我从KakaoTalk获得了accesstoken
。然后尝试使用该令牌对用户进行身份验证。这是我的代码:
String token = await kakaoService.getAccessToken();
await firebaseAuth.signInWithCustomToken(
token: token,
);
这样获得令牌:nmAzFpOF9XrijP-ZoFpQbVluGZ4lLDbZxOCXIAo9c-sAAAFxrID6xA
但是出现此错误:
自定义令牌格式不正确。请检查文档。 [无效的断言格式。需要3个点分隔的段。 ]
这是怎么了?我想念什么吗?
答案 0 :(得分:2)
似乎kakaoService.getAccessToken()
返回的令牌对于Firebase身份验证不是有效的自定义令牌。实际上,给出错误消息后,它似乎根本不是JWT。
用于Firebase身份验证的自定义令牌必须具有特定格式,该格式在creating custom tokens中进行了说明。通常,您将需要遵循以下过程来获取Firebase身份验证的有效令牌:
第2步和第3步必须在受信任的环境中进行,例如开发计算机,您控制的服务器或Cloud Functions。
答案 1 :(得分:2)
查看有关自定义令牌使用的Firebase文档:https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_a_third-party_jwt_library
Firebase需要成功解码客户端提交的身份验证令牌,然后使用其声明来验证对Firebase资源的访问。因此,Firebase要求根据其文档中阐明的规则对自定义标记进行格式化。 (它们描述了一个非常典型的JSON Web令牌。)
您从 KakaoTalk 获取的访问令牌不遵循Firebase的令牌规则,因此Firebase不知道如何处理它。我建议您重新访问KakaoTalk文档,看看它是否可以生成标准的RS256 JWT令牌,Firebase 可以使用它。