使用“Net :: Google :: Drive :: Simple”获取“400 Bad Request”和“invalid_grant”消息

时间:2016-10-24 08:44:19

标签: perl google-api google-drive-api google-oauth2

我正在使用Token refresh failed at /usr/local/share/perl/5.20.2/OAuth/Cmdline.pm line 76从网上获取文档并将其放在我的Google云端硬盘上。脚本工作正常,直到我最近开始收到以下错误:HTTP/1.1 400 Bad Request Cache-Control: no-cache, no-store, max-age=0, must-revalidate Connection: close Date: Mon, 24 Oct 2016 08:32:13 GMT Pragma: no-cache Accept-Ranges: none Server: GSE Vary: Accept-Encoding Content-Type: application/json; charset=utf-8 Expires: Mon, 01 Jan 1990 00:00:00 GMT Alt-Svc: quic=":443"; ma=2592000; v="36,35,34" Client-Date: Mon, 24 Oct 2016 08:32:13 GMT Client-Peer: 2607:f8b0:4006:80e::200d:443 Client-Response-Num: 1 Client-SSL-Cert-Issuer: /C=US/O=Google Inc/CN=Google Internet Authority G2 Client-SSL-Cert-Subject: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=accounts.google.com Client-SSL-Cipher: ECDHE-RSA-AES128-SHA Client-SSL-Socket-Class: IO::Socket::SSL X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block { "error" : "invalid_grant" }

从Google的回复中打印出标题会显示以下内容:

-fsanitize-undefined

1 个答案:

答案 0 :(得分:2)

要检查的第一件事:

您服务器的时钟与NTP不同步。 (解决方案:检查服务器时间是否错误修复它。)

要检查的第二件事:

您的刷新令牌无效,您需要一个新令牌。再次验证您的代码。

刷新令牌不再有效的可能原因。

  1. 用户在其Google帐户中撤消了该帐户。
  2. 刷新令牌尚未用于在六个月内获得新的访问令牌。
  3. 达到的用户的最大刷新令牌数:如果用户对您的应用程序进行身份验证,则会获得与对其进行身份验证的用户关联的刷新令牌。如果用户再次运行它,您将获得第二个刷新令牌。每个用户最多可以拥有25个未完成的刷新令牌,此时第一个给定的刷新令牌将过期且不再有效。这就是为什么始终为用户保存最新的刷新令牌非常重要的原因。