2016-10-24 2 views
2

[Net::Google::Drive::Simple][1]을 사용하여 웹에서 문서를 가져 와서 Google 드라이브에 저장합니다. 최근에 다음 오류가 발생하기 전까지 스크립트가 제대로 작동했습니다 : Token refresh failed at /usr/local/share/perl/5.20.2/OAuth/Cmdline.pm line 76."Net :: Google :: Drive :: Simple"과 함께 "400 Bad Request"및 "invalid_grant"메시지 받기

다음 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. 6 개월 후에 새로 고침 토큰을 사용하여 새 액세스 토큰을 얻지 못했습니다.
  3. 사용자에 대한 최대 새로 고침 토큰 수 : 사용자가 응용 프로그램을 인증하면 인증 한 사용자와 관련된 새로 고침 토큰을 받게됩니다. 사용자가 다시 실행하면 두 번째 새로 고침 토큰이 생깁니다. 각 사용자에 대해 최대 25 개의 미해결 새로 고침 토큰을 가질 수 있습니다. 이때 첫 번째 지정된 토큰이 만료되고 더 이상 작동하지 않습니다. 따라서 항상 사용자에게 가장 새로 고친 새로 고침 토큰을 저장하는 것이 중요합니다.
+0

나는 시계를 확인했다. 그것은 자리에 있습니다. "코드를 다시 인증"이라고 말하면 정확히 무엇을 의미합니까? – StevieD

+2

Oauth2, 창을 팝업해서 액세스를 요청하십시오. 새로 고침 토큰을 사용하고 있습니까? 스크립트에 Google 드라이브 계정에 쓰기 권한이 필요했습니다. – DaImTo

+0

이것은 내 서버에서 .yml 파일의 비밀을 검색하는 작업을 수행하는 펄 스크립트입니다. Google 콘솔을 보면 Google 드라이브 API의 자격증 명을 볼 수 있으며 모든 것이 .yml 파일의 내용과 일치합니다. – StevieD

관련 문제