【发布时间】:2016-05-09 07:08:53
【问题描述】:
我是 Python 新手,开始尝试访问不同的 API,现在我开始使用 Dropbox API。 但是当我尝试访问自己的帐户时,我获得了“invalid_grant”访问权限。
import dropbox
app_key = 'AAAA'
app_secret = 'BBBB'
flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret)
authorize_url = flow.start()
print ('1. Go to: ' + authorize_url)
print ('2. Click "Allow" (you might have to log in first)')
print ('3. Copy the authorization code.')
code = 'CCCC'
access_token, user_id = flow.finish(code)
当我运行这个脚本时,我得到了以下输出。
Traceback(最近一次调用最后一次): 文件“PATH/dropboxdownload.py”,第 14 行,在 access_token, user_id = flow.finish(code) 文件“PATH\Python35-32\lib\site-packages\dropbox-2.2.0-py3.5.egg\dropbox\client.py”,第 1398 行,完成 返回self._finish(代码,无) 文件“PATH\Python35-32\lib\site-packages\dropbox-2.2.0-py3.5.egg\dropbox\client.py”,第 1265 行,在 _finish 响应 = self.rest_client.POST(url, params=params) 文件“PATH\Python35-32\lib\site-packages\dropbox-2.2.0-py3.5.egg\dropbox\rest.py”,第 316 行,在 POST 返回 cls.IMPL.POST(*n, **kw) 文件“PATH\Python35-32\lib\site-packages\dropbox-2.2.0-py3.5.egg\dropbox\rest.py”,第 254 行,在 POST post_params=params, headers=headers, raw_response=raw_response) 文件“PATH\Python35-32\lib\site-packages\dropbox-2.2.0-py3.5.egg\dropbox\rest.py”,第 227 行,在请求中 引发 ErrorResponse(r, r.read()) dropbox.rest.ErrorResponse: [400] 'invalid_grant' 进程以退出代码 1 结束
【问题讨论】:
-
我假设 AAAA、BBBB 和 CCCC 不是真正的值,但您实际上是在硬编码代码的值吗?这确实需要成为用户从网站获得的价值。如果您已经有一个想要使用的访问令牌,那么只需跳过所有这些代码并将
access_token分配给该值并继续。 -
嗨,没错,当我在网上公开代码时,AAAA、BBBB 和 CCCC 是假值。但实际上这只是一个测试脚本,当我最终完成查询时,我想我真的可以做我想做的事了。但是为了给你更多信息,我尝试在 Dropbox 中创建一个文件,我想每天下载一次并将其加载到我的 Tweppy Python 脚本中,这样我就可以轻松添加新的主题标签,它会自动更新我的 Tweppy过滤器。
-
我发现了脚本的问题,但它并没有解决我的问题。我现在可以获取我的帐户详细信息,但每次运行 Python 脚本时我都需要分配一个新的授权代码。我需要一种方法,我可以每天下载一次此文件,而无需在 Dropbox 上登录并获取新的授权码。谢谢克里斯蒂安
-
一旦您获得了访问令牌(来自此脚本或从应用程序控制台生成令牌),只需重复使用它即可。您不能重复使用授权码,只能访问令牌。