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

Другие вопросы по тегам