Я пытаюсь реализовать аутентификацию с помощью Firebase, но в настоящее время у меня возникают странные проблемы.
В моем бэкэнде я использую это для проверки токена:
async getUser(token: string) {
const ticket = await client.verifyIdToken({
idToken: token,
audience: CLIENT_ID
});
const payload = ticket.getPayload();
const userid = payload.sub;
...
}
Когда я отправляю этот токен с IdpResponse.fromResultIntent(data)
, все работает просто отлично.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val response = IdpResponse.fromResultIntent(data)
if (resultCode == Activity.RESULT_OK) {
response?.idpToken?.let {
val loginRepo = LoginRepository(this)
loginRepo.login(Login(it), {}, {})
}
} else {
...
}
}
}
Но когда я посылаю токен от currentUser
, async getUser(token: string)
всегда выдает исключение.
val user = FirebaseAuth.getInstance().currentUser
if (user != null) {
user.getIdToken(false).addOnCompleteListener {
if (it.isSuccessful) {
val token = it.result?.token
val loginRepo = LoginRepository(this)
token?.let { loginRepo.login(Login(it), {
...
}, {
...
}) }
}
}
}
Исключение:
Ошибка: не найдено pem для конверта:
{ "ALG": "RS256", "ребенок": "... "" Тип ":" JWT"}
При использовании: https://oauth2.googleapis.com/tokeninfo?id_token=XYZ123
токен, полученный из idpResponse, работает нормально, но другой токен, полученный из currentUser, не работает, возвращает:
{
«ошибка»: «неверный_кокен»,
"error_description": "Неверное значение"}
Как я могу получить de idpToken от currentUser? Почему не работает idToken?