Firebase authWithOauthToken не работает
Я разрабатываю приложение в Android с использованием firebase. Я создал операцию входа в систему, где у меня есть метод, который регистрирует пользователя, когда они передают учетные данные (создание пользователя уже сделано). Затем я сохраню токен, полученный в обратном вызове onAuthenticated, чтобы я могу войти в систему автоматически в следующий раз, когда он / она откроет приложение без запроса ввода учетных данных.
Вот код
private void loginWithPassword(final String email, String password) {
progressDialog.show();
FirebaseConnections.getConnection().authWithPassword(email, password,
new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
// Authentication just completed successfully :)
IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
dismissProgressDialog();
}
@Override
public void onAuthenticationError(FirebaseError error) {
// Something went wrong :(
dismissProgressDialog();
Snackbar.make(parentView, error.getMessage(), Snackbar.LENGTH_LONG).show();
}
});
}
А потом я проверяю onCreate, есть ли у нас токен для входа в систему
private void checkIfTokenExistAndLogin() {
if (IGStorePreference.getInstance().isPrefExists(Constants.TOKEN)) {
progressDialog.show();
String provider = IGStorePreference.getInstance().getString(Constants.PROVIDER);
String token = IGStorePreference.getInstance().getString(Constants.TOKEN);
FirebaseConnections.getConnection().authWithOAuthToken(provider, token, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
dismissProgressDialog();
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
dismissProgressDialog();
Snackbar.make(parentView, firebaseError.getMessage(), Snackbar.LENGTH_LONG).show();
}
});
}
}
Но проблема в том, что я получаю сообщение об ошибке во время входа пользователя с authWithOAuthToken. Пожалуйста, помогите, что я пропускаю.
Это ошибка, которую я получаю каждый раз.
FirebaseError: предоставлены неверные учетные данные для аутентификации.
1 ответ
authWithOAuthToken используется для входа в систему с социальным провайдером. Например, пользователь входит в Google и получает токен OAuth, возвращенный из Google. Затем приложение отправляет этот токен OAuth на сервер аутентификации Firebase через authWithOAuthToken. Пользователь может войти в систему после того, как сервер проверит токен OAuth.
В вашем случае, пользователь вошел в систему с электронной почтой / паролем. Полученный токен был токеном авторизации Firebase, выпущенным сервером аутентификации Firebase, а не токеном OAuth, выданным социальным провайдером.
Подробности см. В документе: https://firebase.google.com/support/guides/firebase-android