2016-12-17 3 views
0

, когда я нажимаю 1-й раз на значке google, спрашивайте, какой a \ c будет выбран, когда будет больше 1 a] c. но 2-й раз, когда он не спрашивал, его атомарный логин с предыдущим выбранным a \ c.Вход в Google всегда спрашивает, какие учетные записи выбрать

, как я всегда могу показать \ с выбранным

mGoogleApiClient = new GoogleApiClient.Builder(context) 
      .enableAutoManage((FragmentActivity) context, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

       } 
      }) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 

я устал mGoogleApiClient.clearDefaultAccountAndReconnect(); но дал мне аварии как клиент не подключен

ответ

1
You will have to use the revoke access callback. 

googleApiClient = new GoogleApiClient.Builder(this) 
        .enableAutoManage(LoginActivity.this , this) 
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
        .addApi(AppIndex.API).build(); 

На знаке в нажатии кнопки

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient); 
        startActivityForResult(signInIntent, 100); 

В OnActivityResult

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      handleSignInResult(result); 

Теперь вы делаете функцию handleSignInResult(result) и использовать информацию предоставленную пользователем. Поскольку в обратном вызове доступ будет отменен. Здесь вы получаете информацию и делаете то, что хотите.

добавить этот обратный вызов к вашему GoogleApiClient

googleApiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
      @Override 
      public void onConnected(@Nullable Bundle bundle) { 
       if (googleApiClient.isConnected()) { 
        Auth.GoogleSignInApi.revokeAccess(googleApiClient).setResultCallback(
          new ResultCallback<Status>() { 
           @Override 
           public void onResult(@NonNull Status status) { 
            Log.e("getOut",status.toString()); 
           } 
          }); 
       } 
      } 
      @Override 
      public void onConnectionSuspended(int i) { 

      } 
     }); 

Этот обратный вызов будет отзывать доступ со всех счетов и будет показывать диалоговое окно для выбора каждый раз Gmail счета.

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

+1

onConnected не называется – andro

+1

signOut должно быть достаточно для локального устройства, отмена приведет к тому, что это произойдет на всех устройствах ... https://developers.google.com/identity/sign-in/android/disconnect –