google API有很多示例代码展示了如何获取授权令牌并使用它,但我找不到任何示例代码展示如何在java客户端中使用Oauth 2.0 GoogleAccessProtectedResource.refreshToken()方法来获取java中的新授权令牌。谷歌搜索一无所获,我只能在Stackoverflow上找到一个C#示例。如果你能给我一点Java中的示例代码来展示这是如何做到的,那就太好了。我在安卓系统中工作的平台。我想使用的OAuth 2.0模型示例如下:http://blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/
非常感谢
在这里回答我自己的问题。事实证明,这是非常直接的,通过调用GoogleAccessProtectedResource.refreshToken(),访问令牌在类内刷新,可以通过其getter根据需要读取和重用。
您必须捕获401个(未经授权的)错误。在这之后做这样的事情。
accountManager.invalidateAuthToken(accessProtectedResource.getAccessToken());
accessProtectedResource.setAccessToken(null);
之后,只需取回代币。这一次用户将不必再次授权访问。
accountManager.manager.getAuthToken(account, AUTH_TOKEN_TYPE, true,
new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> future) {
try {
Bundle bundle = future.getResult();
if (bundle.containsKey(AccountManager.KEY_INTENT)) {
Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);
intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, REQUEST_AUTHENTICATE);
} else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
accessProtectedResource.setAccessToken(bundle.getString(AccountManager.KEY_AUTHTOKEN));
onAuthToken();
}
} catch (Exception e) {
handleException(e);
}
}
}, null);
请参考任务示例和相应的文章。