GoogleTokenResponse间歇性地不包含ID令牌

时间:2016-04-08 11:18:34

标签: android google-cloud-endpoints google-play-games google-authentication

间歇性地,GoogleTokenResponse.parseIdToken()具有NullPointerExpection,因为令牌响应不包含ID令牌。在不更改任何代码的情况下,有时会有ID令牌,有时候也没有。请注意,GoogleTokenResponse.getAccessToken()始终有效。

如果不对任何代码进行任何更改,即使访问令牌始终可用,ID令牌也会在一分钟到下一分钟内丢失。

我该如何调试?在哪里看?

我使用Google Play游戏API在Android客户端中使用此代码获取服务器验证代码:

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());
                }
            });

在服务器端(Google Cloud Endpoints),我使用以下代码交换令牌代码:

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!!!!
        } ...

0 个答案:

没有答案