0

Intermittierend hat GoogleTokenResponse.parseIdToken() eine NullPointerExpection, weil die Token-Antwort kein ID-Token enthält. Ohne Code zu ändern, gibt es manchmal einen ID-Token und manchmal nicht. Beachten Sie, dass GoogleTokenResponse.getAccessToken() immer funktioniert.GoogleTokenResponse enthält kein ID-Token, intermittierend

Ohne irgendeine Änderung an einem Code fehlt der ID-Token von einer Minute zur nächsten, auch wenn das Zugriffstoken immer verfügbar ist.

Wie kann ich dies debuggen? Wo kann man hinschauen?

ich den Server Auth-Code mit diesem in einem Android-Client Google Games API Spielen:

PendingResult<Games.GetServerAuthCodeResult> pendingResult = 
        Games.getGamesServerAuthCode(mGoogleApiClient, Constants.web_client_ID); 
      pendingResult.setResultCallback(new ResultCallback<Games.GetServerAuthCodeResult>() { 
       @Override 
       public void onResult(Games.GetServerAuthCodeResult getTokenResult) {  
        sendToServer(getTokenResult.getCode()); 
       } 
      }); 

Auf der Serverseite (Google Cloud Endpoints), tausche ich den Code für ein Zeichen mit diesem Code:

try { 
    tokenResponse = new GoogleAuthorizationCodeTokenRequest(
        transport,mJFactory, 
        "https://www.googleapis.com/oauth2/v4/token", 
        web_client_ID,web_client_secret, 
        authCode, 
        "") 
        .execute(); 
     } ... 
     String accessToken = tokenResponse.getAccessToken(); 
     GoogleIdToken idToken = null; 
     try { 
      idToken = tokenResponse.parseIdToken(); //-- FAILES HERE INTERMITTENTLY!!!! 
     } ... 

Antwort

0

da es, dass die Play Games Dienstleistungen scheint keine ID-Token garantieren mit Games.getGamesServerAuthCode sollte man die Anweisungen in diesem post folgen und die ID-Token zu erhalten, wie es empfiehlt:

Sobald Sie das Zugriffs-Token haben, können Sie jetzt www.googleapis.com/games/v1/applications/deverify/ unter Verwendung dieses Zugriffstokens aufrufen. Übergeben Sie das Authentifizierungs-Token wie folgt in einer Kopfzeile: "Authorization: OAuth" Der Antwortwert enthält die Player-ID für den Benutzer.

Ein vollständiges Beispiel finden Sie unter this.