检索用户的Google联系人2-3分钟后出现令牌响应异常

RBP

1-2分钟后,我不断收到令牌响应异常。在2-3分钟后联系会出现,然后在2-3分钟后会再次出现令牌异常。以下是例外

com.google.api.client.auth.oauth2.TokenResponseException: 403 OK

<p class="large"><b>403.</b> 
<ins>That's an error.</ins></p><p class="large">You are not authorised to perform this request.  <ins>That's all we know.</ins>
</p>

我正在检索用户的联系人,下面是我的代码,

 ContactsService contactService = new ContactsService("appName");
 contactService.setOAuth2Credentials(getCredentials());

下面是getCredentials()方法。

public  GoogleCredential getCredentials()  {
    GoogleCredential credential = null;
    try{

         Collection<String> SCOPES = new ArrayList<String>();
         SCOPES.add("https://www.googleapis.com/auth/userinfo.profile");
         SCOPES.add("https://www.google.com/m8/feeds");
         HttpTransport httpTransport = new NetHttpTransport();
         JacksonFactory jsonFactory = new JacksonFactory();
         credential = new GoogleCredential.Builder().setTransport(httpTransport)
                .setJsonFactory(jsonFactory)
                .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
                .setServiceAccountScopes(SCOPES)
                .setServiceAccountUser(adminEmailAddress)
                .setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
                .build().setExpiresInSeconds(min);

         credential.refreshToken();

    } catch(Exception e){
        e.printStackTrace();
    }
    return credential;
}

谁能告诉我如何在最长时间内保持令牌有效或如何解决上述问题。

戴姆敦

您需要了解Oauth2的工作原理,我认为您应该阅读使用OAuth 2.0访问Google API

  1. 如有必要,刷新访问令牌。

访问令牌的寿命有限。如果您的应用程序需要在单个访问令牌的生存期之外访问Google API,则可以获取刷新令牌。刷新令牌使您的应用程序可以获得新的访问令牌。

注意:将刷新令牌保存在安全的长期存储中,并在它们仍然有效的情况下继续使用它们。限制适用于每个客户端-用户组合以及所有客户端上的每个用户发出的刷新令牌的数量,并且这些限制是不同的。如果您的应用程序请求足够的刷新令牌以超过限制之一,则较旧的刷新令牌将停止工作。

如文档中所述,访问令牌仅在有限的时间内工作。那是1个小时,您无法延长。但是您具有获取新的AccessToken所需的refreshToken。除非用户撤消您的访问权限,否则RefreshTokens不会过期。但是在您的情况下,这不会发生,因为您使用的是服务帐户。这样您就可以重新运行代码并获得一个新的AccessToken

您有两种选择:

  1. 如果您的访问令牌即将过期,请检查返回的时间,然后重新运行代码并获取一个新的代码。
  2. 等待直到收到错误消息,然后请求新的访问令牌。

第一种选择是最好的,因为google记录了您从API获得的错误数量,而没有理由对您运行会出错的东西。我通常会在我的旧令牌到期前5分钟请求一个新的AccessToken。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google Contacts V3,仅检索GMail联系人

来自分类Dev

尝试从JSON响应中检索联系人照片时,Google通讯录API断开链接

来自分类Dev

如何显示单个用户的多个联系人swift 3

来自分类Dev

如何获得没有访问令牌的Google联系人?

来自分类Dev

根据联系人ID检索Google联系人

来自分类Dev

根据联系人ID检索Google联系人

来自分类Dev

仅使用Google Contacts API v3列出“我的联系人”组的联系人

来自分类Dev

Rails在15秒内完成,超过2分钟后收到响应

来自分类Dev

在HttpClient postAbs Vert.x中2分钟后获得响应

来自分类Dev

Google Oauth2联系人API返回无效令牌:无状态令牌在一小时后过期

来自分类Dev

Swift 3 SpriteKit 检测联系人

来自分类Dev

如何重置Gnome 3联系人?

来自分类Dev

如何在响应式Google Map旁边添加联系人详细信息

来自分类Dev

如何在响应式Google Map旁边添加联系人详细信息

来自分类Dev

获取组中的联系人Google通讯录api v3

来自分类Dev

2-3分钟后,asp.net中的会话即将关闭

来自分类Dev

路由器会自动禁用wifi,并在2-3分钟后启用

来自分类Dev

获得许可后如何联系联系人?

来自分类Dev

在EC2上针对S3托管的网站运行PHP联系人表单

来自分类Dev

用户会话在20分钟后关闭

来自分类Dev

运行jQuery脚本发出Ajax请求2分钟后,出现错误net :: ERR_INSUFFICIENT_RESOURCES

来自分类Dev

Google Contacts API检索每个联系人的组名

来自分类Dev

2分钟后线程什么也不做

来自分类Dev

gitlab CI docker 2分钟后停顿

来自分类Dev

从 php 中的 google 联系人中检索群组联系人

来自分类Dev

我想在用户进入网站3分钟后弹出一个窗口

来自分类Dev

尝试使用联系人填充ListView时发生异常

来自分类Dev

Android提取所有联系人列表(姓名,电子邮件,电话)大约需要700分钟才能完成大约700个联系人

来自分类Dev

使用Yahoo Contacts API通过OAuth2令牌使用该API导入所有联系人

Related 相关文章

  1. 1

    Google Contacts V3,仅检索GMail联系人

  2. 2

    尝试从JSON响应中检索联系人照片时,Google通讯录API断开链接

  3. 3

    如何显示单个用户的多个联系人swift 3

  4. 4

    如何获得没有访问令牌的Google联系人?

  5. 5

    根据联系人ID检索Google联系人

  6. 6

    根据联系人ID检索Google联系人

  7. 7

    仅使用Google Contacts API v3列出“我的联系人”组的联系人

  8. 8

    Rails在15秒内完成,超过2分钟后收到响应

  9. 9

    在HttpClient postAbs Vert.x中2分钟后获得响应

  10. 10

    Google Oauth2联系人API返回无效令牌:无状态令牌在一小时后过期

  11. 11

    Swift 3 SpriteKit 检测联系人

  12. 12

    如何重置Gnome 3联系人?

  13. 13

    如何在响应式Google Map旁边添加联系人详细信息

  14. 14

    如何在响应式Google Map旁边添加联系人详细信息

  15. 15

    获取组中的联系人Google通讯录api v3

  16. 16

    2-3分钟后,asp.net中的会话即将关闭

  17. 17

    路由器会自动禁用wifi,并在2-3分钟后启用

  18. 18

    获得许可后如何联系联系人?

  19. 19

    在EC2上针对S3托管的网站运行PHP联系人表单

  20. 20

    用户会话在20分钟后关闭

  21. 21

    运行jQuery脚本发出Ajax请求2分钟后,出现错误net :: ERR_INSUFFICIENT_RESOURCES

  22. 22

    Google Contacts API检索每个联系人的组名

  23. 23

    2分钟后线程什么也不做

  24. 24

    gitlab CI docker 2分钟后停顿

  25. 25

    从 php 中的 google 联系人中检索群组联系人

  26. 26

    我想在用户进入网站3分钟后弹出一个窗口

  27. 27

    尝试使用联系人填充ListView时发生异常

  28. 28

    Android提取所有联系人列表(姓名,电子邮件,电话)大约需要700分钟才能完成大约700个联系人

  29. 29

    使用Yahoo Contacts API通过OAuth2令牌使用该API导入所有联系人

热门标签

归档