0

Я разрабатываю приложение на Android с помощью firebase.I создал учетную запись, в которой у меня есть метод, который регистрирует пользователя, когда он передает учетные данные (создание пользователя уже выполнено). Затем я сохраню токен, полученный в onAuthenticated callback, чтобы я мог автоматически регистрировать пользователя в следующий раз, когда он открывает приложение, не прося ввести учетные данные.Firebase authWithOauthToken не работает

Вот код

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: Invalid authentication credentials provided.

ответ

1

authWithOAuthToken используется для входа в систему социальной помощи. Например, пользователь подписывается с Google и получает токен OAuth, полученный от Google. Затем приложение отправляет этот токен OAuth в сервер Firebase auth через authWithOAuthToken. Пользователь может войти в систему после того, как сервер проверит токен OAuth.

В вашем случае пользователь выполнил вход с помощью электронной почты/пароля. Выбранный токен был токеном Firebase, выпущенным сервером Firebase auth, а не токеном OAuth, выпущенным социальным провайдером.

Дополнительную информацию можно найти в документе: https://firebase.google.com/support/guides/firebase-android#sign_a_user_in_with_a_social_provider_numbered

Смежные вопросы