Java:Oauth 2.0我如何使用Google API RefreshTokens来避免每次启动应用程序时请求访问



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

请参考任务示例和相应的文章。

相关内容

  • 没有找到相关文章

最新更新