onActivityResult () не вызывает создание новой учетной записи при входе в Google - PullRequest
0 голосов
/ 18 мая 2018

Я интегрировал вход в Google.При нажатии на кнопку входа открывается окно «Выбрать аккаунт».Если я выберу уже созданную учетную запись Google для входа, обратный вызов в onActivityResult (), но при создании новой учетной записи, обратный вызов не будет получен.

Код здесь.

googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

googleSignInClient = GoogleSignIn.getClient (this, googleSignInOptions);

Обработка обратного вызова:

private void signIn() {
    googleSignInClient.signOut();
    Intent signInIntent = googleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent, 123);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 123 && data != null) {
        handleSignInResult(data);
    }
}

private void handleSignInResult(Intent data) {
    Task<GoogleSignInAccount> signInTask = GoogleSignIn.getSignedInAccountFromIntent(data);
    try {
        GoogleSignInAccount googleSignInAccount = signInTask.getResult(ApiException.class);
        if (googleSignInAccount != null) {
            updateUI(googleSignInAccount);
        }
    } catch (ApiException e) {
        e.printStackTrace();
    }
}

Не поймите, что не так с этим кодом.Это вопрос Google?

Gradle:

 compile 'com.google.firebase:firebase-core:12.0.1'
compile 'com.google.firebase:firebase-auth:12.0.1'
compile 'com.google.firebase:firebase-messaging:12.0.1'
compile 'com.android.support:recyclerview-v7:25.1.1'
compile 'com.android.support:cardview-v7:25.1.1'
compile 'com.android.support:design:25.3.1'
compile 'com.google.android.gms:play-services-auth:12.0.1'

1 Ответ

0 голосов
/ 24 мая 2018

Пока мы не получим обновление релиза от Google, вот еще один обходной путь, с помощью которого я получил решение.

Как мы знаем, onActivityResult () вызывается не только когда пользователь добавляет новую учетную запись, но onRestart () иМетод start () вызывается.

Ниже приведен код для открытия экрана концентрации Google в выбранной учетной записи или добавления новой учетной записи.

Intent signInIntent = loginHandler.mGoogleSignInClient.getSignInIntent ();activity.startActivityForResult (signInIntent, RC_GET_TOKEN);Перед звонком по вышеуказанному коду я сохраняю количество зарегистрированных аккаунтов Google.то есть 3 учетных записи, зарегистрированных на моем устройстве.

Как только пользователь завершит процесс добавления новой учетной записи, метод onStart () получит вызов, и здесь я снова проверил количество учетных записей Google по следующему коду:

Account[] googleAccounts = AccountManager.get(activity).getAccountsByType("com.google");

if (googleAccounts != null && googleAccounts.length > 0) {
    if (lastGoogleAccounts == 0) {
        lastGoogleAccounts = googleAccounts.length;
    } else {
        if (googleAccounts.length > lastGoogleAccounts) {
         // do login

}

если новый счет> последний счет, это означает, что новая учетная запись зарегистрирована и перенаправлена ​​на домашний экран.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...