0

我正在尝试访问客户的 Google Drive 以下载他们的文件。在我自己的谷歌驱动器上测试代码时,我能够成功下载文件。但是,当我从他们那里得到 oauth 代码时,我得到了错误:

oauth2client.client.FlowExchangeError: invalid_grant

在查看了其他一些答案后,建议您确保 access_type='offline',这似乎是默认设置,我可以在生成的 url 中看到设置了此参数。听起来他们返回的代码可能仅在一个小时内有效,但是我尝试在一小时内使用它,但仍然没有运气。有关如何避免此问题的任何其他建议?

这是我一直在运行的代码:

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 行上出错。

4

1 回答 1

1

我知道这个错误的三个标准原因。

  1. 您的 PC 上的时间已关闭。解决方法:检查一下。
  2. 您尝试使用验证码不止一次。您只能使用一次身份验证代码来获取刷新令牌。
  3. 您不止一次地测试和验证代码。每次验证代码时,您都会获得一个有效的刷新令牌。您最多可以获得 25 个刷新令牌,然后它们就会停止工作。 解决方案:确保每次刷新访问权限时使用的是刷新令牌而不是旧令牌。

此外,谷歌作为 Python 教程向您展示了如何使用 Python 客户端库访问驱动器,它可能会让您更轻松。 Python 快速入门

于 2016-03-29T06:42:26.017 回答