间歇性地,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!!!!
} ...