В моем приложении для Android я вхожу в систему через Firebase AuthUI, используя вход Google. Эта часть работает. Теперь я попытался войти в систему с помощью IdToken, но всегда получаю это сообщение об ошибке:
com.google.android.gms .tasks.RuntimeExecutionException:
com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: предоставленные учетные данные аутентификации неверны или срок их действия истек. [Неверный id_token в ответе поставщика идентификационной информации: XXXXXXX... ]
Это работает, и я успешно авторизуюсь в моем проекте Firebase:
@OnClick(R.id.sign_in)
public void signIn() {
startActivityForResult(
AuthUI.getInstance().createSignInIntentBuilder()
.setTheme(getSelectedTheme())
.setLogo(getSelectedLogo())
.setAvailableProviders(getSelectedProviders())
.setTosAndPrivacyPolicyUrls(getSelectedTosUrl(),getSelectedPrivacyPolicyUrl())
.setIsSmartLockEnabled(true,
true)
.build(),
RC_SIGN_IN);
}
Но попытка использовать SignInWithCredential с использованием учетных данных, полученных из IdToken, приводит к ошибке, указанной выше:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
handleSignInResponse(resultCode, data);
return;
}
}
@MainThread
private void handleSignInResponse(int resultCode, Intent data) {
IdpResponse response = IdpResponse.fromResultIntent(data);
if (resultCode == RESULT_OK) {
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = auth.getCurrentUser();
if(firebaseUser != null){
auth.getCurrentUser().getIdToken(true).addOnCompleteListener(task -> {
String idToken = task.getResult().getToken();
AuthCredential cred = GoogleAuthProvider.getCredential(idToken ,null);
auth.signInWithCredential(cred).addOnCompleteListener(task1 ->
Log.v(TAG,"results: " + task1.getResult()));
});
}
}
}
Я следую этому руководству и моя цель — войти в несколько проектов Firebase.
Пытаюсь вход во вторичный проект Firebase, используя учетные данные из IdToken выше, возвращает ту же ошибку.
FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
Подробнее здесь: https://stackoverflow.com/questions/598 ... as-expired
Предоставленные учетные данные аутентификации неверны или срок их действия истек. ⇐ Android
Форум для тех, кто программирует под Android
1728936014
Anonymous
В моем приложении для Android я вхожу в систему через Firebase AuthUI, используя вход Google. Эта часть работает. Теперь я попытался войти в систему с помощью IdToken, но всегда получаю это сообщение об ошибке:
com.google.android.gms .tasks.RuntimeExecutionException:
com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: предоставленные учетные данные аутентификации неверны или срок их действия истек. [Неверный id_token в ответе поставщика идентификационной информации: XXXXXXX... ]
Это работает, и я успешно авторизуюсь в моем проекте Firebase:
@OnClick(R.id.sign_in)
public void signIn() {
startActivityForResult(
AuthUI.getInstance().createSignInIntentBuilder()
.setTheme(getSelectedTheme())
.setLogo(getSelectedLogo())
.setAvailableProviders(getSelectedProviders())
.setTosAndPrivacyPolicyUrls(getSelectedTosUrl(),getSelectedPrivacyPolicyUrl())
.setIsSmartLockEnabled(true,
true)
.build(),
RC_SIGN_IN);
}
Но попытка использовать SignInWithCredential с использованием учетных данных, полученных из IdToken, приводит к ошибке, указанной выше:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
handleSignInResponse(resultCode, data);
return;
}
}
@MainThread
private void handleSignInResponse(int resultCode, Intent data) {
IdpResponse response = IdpResponse.fromResultIntent(data);
if (resultCode == RESULT_OK) {
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = auth.getCurrentUser();
if(firebaseUser != null){
auth.getCurrentUser().getIdToken(true).addOnCompleteListener(task -> {
String idToken = task.getResult().getToken();
AuthCredential cred = GoogleAuthProvider.getCredential(idToken ,null);
auth.signInWithCredential(cred).addOnCompleteListener(task1 ->
Log.v(TAG,"results: " + task1.getResult()));
});
}
}
}
Я следую этому руководству и моя цель — войти в несколько проектов Firebase.
Пытаюсь вход во вторичный проект Firebase, используя учетные данные из IdToken выше, возвращает ту же ошибку.
FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
Подробнее здесь: [url]https://stackoverflow.com/questions/59848069/the-supplied-auth-credential-is-malformed-or-has-expired[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия