2016-03-28 39 views
0

我試圖訪問客戶的Google Drive以下載其文件。在自己的谷歌驅動器上測試代碼時,我能夠成功下載文件。然而,當我從他們那裏得到了OAuth的代碼,我得到的錯誤:invalid_grant驗證oauth請求時出錯 - Google Drive

oauth2client.client.FlowExchangeError: invalid_grant 

尋找一些其他的答案後,已建議您確保ACCESS_TYPE =「下線」,這似乎是默認,我可以看到在生成的網址,該參數設置。這聽起來像他們回饋的代碼可能只有一個小時有效,但我試圖在一小時內使用它,但仍然沒有運氣。有關如何避免此問題的其他建議?

這是我一直在運行的代碼:

from oauth2client import client 
import webbrowser 

flow = client.flow_from_clientsecrets(
    'client_secrets.json', 
    scope='https://www.googleapis.com/auth/drive.readonly', 
    redirect_uri='urn:ietf:wg:oauth:2.0:oob') 

auth_uri = flow.step1_get_authorize_url() 
webbrowser.open(auth_uri) 

print auth_uri 

auth_code = raw_input('Enter the auth code: ') 

credentials = flow.step2_exchange(auth_code) 
http_auth = credentials.authorize(httplib2.Http()) 

在flow.step2_exchange線它的錯誤。

回答

0

我知道這個錯誤有三個標準原因。

  1. 您的電腦上的時間已關閉。 解決方案:檢查它。
  2. 您正嘗試多次使用驗證碼。 您只能使用一次驗證代碼來獲取刷新令牌。
  3. 您正在測試和驗證代碼多次。每次您對代碼進行身份驗證時,您都會獲得有效的刷新令牌。您最多可以獲得25個刷新標記,然後停止工作。 解決方案:確保每次刷新您使用該刷新令牌的訪問權限,而不是較舊的刷新令牌。

另外谷歌作爲一個Python教程,向您展示如何使用Python客戶端庫訪問驅動器,它可能會讓你更加容易。 Python QuickStart

+0

非常感謝您的幫助。如果我在允許訪問的用戶的15分鐘內使用它,似乎令牌是有效的。我檢查了我的電腦上的時間,並與NTP同步。我不會多次使用令牌,而且我一次只能使用一個令牌。我不確定爲什麼時間限制似乎會影響令牌,但現在我的問題已解決(我只需確保快速使用令牌)。如果你有任何其他想法,爲什麼它的行爲如此,我很樂意聽到他們的聲音! – user1253952

+0

你在說什麼?如果它的身份驗證碼爲yes,則需要儘快使用該身份驗證並獲取您的訪問令牌和刷新令牌。它不會長時間停留。 – DaImTo

+0

謝謝!是的,驗證碼。沒有意識到有時間限制。你知道它有多久了?當試圖與其他人協調獲取代碼時,這使得它變得具有挑戰性。 – user1253952

相關問題