听起来您可能多次发送相同的授权代码。在 Android 上,GoogleAuthUtil.getToken() 会缓存它检索到的所有令牌,包括授权代码。
如果您请求第二个代码而不使前一个代码无效,GoogleAuthUtil 将返回相同的代码。当您尝试在服务器上交换已交换的代码时,您会收到 invalid_grant 错误。我的建议是在检索令牌后立即使令牌失效(即使您未能交换代码,最好获取一个新令牌,而不是使用旧令牌重试)。
code = GoogleAuthUtil.getToken(
OneTimeCodeActivity.this, // Context context
mPlusClient.getAccountName(), // String accountName
scopes, // String scope
appActivities // Bundle bundle
);
GoogleAuthUtil.invalidateToken(
OneTimeCodeActivity.this,
code
);
invalid_grant 可以因其他原因返回,但我的猜测是缓存导致了您的问题,因为您说它第一次起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)