2016-10-24 5 views
2

Я использую [Net::Google::Drive::Simple][1], чтобы извлечь документ из Интернета и поместить его на свой Google Диск. Сценарий работал нормально, пока я не начал получать следующую ошибку: Token refresh failed at /usr/local/share/perl/5.20.2/OAuth/Cmdline.pm line 76.Получение сообщения «400 Bad Request» и «invalid_grant» с «Net :: Google :: Drive :: Simple»

Распечатка заголовки из ответа от 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" 
} 

ответ

2

Первое, что нужно проверить: часы

вашего сервера не синхронизировано с NTP. (Решение: проверьте время сервера, если его неправильно исправить это.)

Вторая вещь, чтобы проверить:

Ваш маркер обновления не действует вам нужен новый. Повторите аутентификацию своего кода.

Возможные причины для токена обновления больше не работают.

  1. Пользователь отозвал его в своей учетной записи Google.
  2. Обновить токен не использовался, чтобы получить новый токен доступа через шесть месяцев.
  3. Максимальное количество токенов обновления для пользователя: Если пользователь аутентифицирует ваше приложение, вы получаете токен обновления, связанный с пользователем, который его аутентифицировал. Если пользователь снова запускает его, и вы получаете второй токен обновления. Вы можете иметь до 25 выдающихся токенов обновления для каждого пользователя, после чего первый из них истекает и больше не работает. Вот почему его важно всегда сохранять наиболее актуальный токен обновления для пользователя.
+0

Я проверил часы. Это место. Когда вы говорите «еще раз подтвердите свой код», что вы имеете в виду? – StevieD

+2

Oauth2, всплывающее окно запрашивает доступ. Вы используете токен обновления, где вы его получили? Ваш скрипт должен был получить разрешение на запись в учетную запись Google Диска. – DaImTo

+0

Это perl-скрипт, выполняющий работу, которая извлекает секрет из файла .yml на моем сервере. Когда я смотрю на свою консоль Google, я могу видеть учетные данные для API Диска Google, и все соответствует тому, что находится в моем .yml-файле. – StevieD

 Смежные вопросы

  • Нет связанных вопросов^_^