1

GoogleApiClientGames.APIAuth.GOOGLE_SIGN_IN_API(ユーザープロフィール情報を取得する)に接続しようとしています。Auth.GOOGLE_SIGN_IN_APIはGames.APIで使用できません

java.lang.IllegalStateException: Auth.GOOGLE_SIGN_IN_API cannot be used with Games.API 

コード:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestProfile() 
       .build(); 

googleApiClient = new GoogleApiClient.Builder(activity) 
       .addConnectionCallbacks(connectionCallbacks) 
       .addOnConnectionFailedListener(onConnectionFailedListener) 
       .addApi(Games.API).addScope(Games.SCOPE_GAMES) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 

なぜAuth.GOOGLE_SIGN_IN_APIGames.APIを使用することはできません
このエラーを取得しますか?
Games.APIに接続してユーザープロファイル情報を取得する必要がある代替手段は何ですか?

+0

[this](http://stackoverflow.com/questions/35683554/sign-in-with-google-for-games-services)を参照しましたか。 –

+0

@ShreeKrishnaそれは同じ問題ですが、私は正しい答えを見つけられませんでした。 –

+0

新しいGoogleログインフローがGame APIと統合されることを示唆する、Androidの課題追跡ツールに関する問題を作成しました:https:// code。 google.com/p/android/issues/detail?id=225329それが良いアイデアだと思うなら、星を付けてください;) –

答えて

6

私の自己によって解決されました。
すでにGames.APIを接続している場合は、ユーザープロファイル情報を取得するためにAuth.GOOGLE_SIGN_IN_APIを追加する必要はありません。


接続:

googleApiClient = new GoogleApiClient.Builder(activity) 
       .addConnectionCallbacks(connectionCallbacks) 
       .addOnConnectionFailedListener(onConnectionFailedListener) 
       .addApi(Games.API).addScope(Games.SCOPE_GAMES) 
       .build(); 

失敗した場合:接続されている場合

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    if (connectionResult.hasResolution()) { 
     try { 
      connectionResult.startResolutionForResult(this, REQUEST_RESOLVE_ERR); 
     } catch (IntentSender.SendIntentException e) { 
      googleApiClient.connect(); 
      e.printStackTrace(); 
     } 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case REQUEST_RESOLVE_ERR: 
      if (resultCode == RESULT_OK) { 
       if (!googleApiClient.isConnecting() 
          && !googleApiClient.isConnected()) 
        googleApiClient.connect(); 
      } 
      break; 
    } 
} 


取得ユーザープロファイル情報:

String name = Games.Players.getCurrentPlayer(googleApiClient).getDisplayName(); 
Uri photo = Games.Players.getCurrentPlayer(googleApiClient).getIconImageUri(); 
//and more... 
+0

しかし、 'Auth.GOOGLE_SIGN_IN_API'がなければ私は認証トークンを得ることができません。出来ますか? – Alexmelyon

+1

@Alexmelyon私はそうは思わない。この例は、Googleのゲーム(Google+ではなく)でユーザーデータを取得するためのものです。 –

関連する問題