我正在尝试使用Android设备上的REST服务进行用户授权。首次确认后,一切正常,但如果我想在使用 GoogleAuthUtil.clearToken 清除旧令牌后使用 GoogleAuthUtil.getToken 获取新令牌,我会收到 com.google .android.gms.auth.UserRecoverableAuthException:NeedPermission 异常导致 应用程序同意屏幕,"具有离线访问权限" 权限。在我授予权限后,我会在 onActivityResult 或 GoogleAuthUtil.getToken 中获得新令牌,但如果我再次清除令牌,我仍会收到调用GoogleAuthUtil.getToken
String SCOPE = Scopes.PLUS_LOGIN;
...
String scope = String.format("oauth2:server:client_id:%s:api_scope:%s", CLIENT_ID, SCOPE);
String token = GoogleAuthUtil.getToken(AuthorizedActivity.this, email, scope);
...
//send received token to server for confirmation
...
try {
GoogleAuthUtil.clearToken(AuthorizedActivity.this, token);
} catch (GoogleAuthException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
...
和我的服务器端:
...
$client = new Google_Client();
$client->setClientId('CLIENT_ID');
$client->setClientSecret('CLIENT_SECRET');
$client->setDeveloperKey('');
$client->authenticate('token_from_device');
return json_decode($client->getAccessToken())->access_token; // temporary
...
,清除令牌后一小时后仍然会发生。
所以我的问题是我做错了什么以及为什么我在清除使用过的令牌后继续获得同意屏幕。我是否需要特定的许可,错误的范围或我错过了其他什么?