使用OAuth2连接到Python

时间:2015-11-21 12:57:33

标签: python-2.7 oauth raspberry-pi dropbox dropbox-api

在运行raspbian jessie的Raspberry Pi上,我尝试使用我通过pip安装的Dropbox SDK for Python将程序连接到我的Dropbox。

对于测试,我复制了documentation中的代码(并且当然定义了app-key和secret):

from dropbox import DropboxOAuth2FlowNoRedirect

auth_flow = DropboxOAuth2FlowNoRedirect(APP_KEY, APP_SECRET)

authorize_url = auth_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."
auth_code = raw_input("Enter the authorization code here: ").strip()

try:
    access_token, user_id = auth_flow.finish(auth_code)
except Exception, e:
    print('Error: %s' % (e,))
    return

dbx = Dropbox(access_token)

我能够获取URL并单击“允许”。然后,当我输入授权码时,它打印出以下错误:

Error: 'str' object has no attribute 'copy'

使用traceback-module中的format_exc,我得到了以下信息:

Traceback (most recent call last):
  File "test.py", line 18, in <module>
    access_token, user_id = auth_flow.finish(auth_code)
  File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 180, in finish
    return self._finish(code, None)
  File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 50, in _finish
    url = self.build_url(Dropbox.HOST_API, '/oauth2/token')
  File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 111, in build_url
    return "https://%s%s" % (self._host, self.build_path(target, params))
  File "/usr/local/lib/python2.7/dist-packages/dropbox/oauth.py", line 89, in build_path
    params = params.copy()
AttributeError: 'str' object has no attribute 'copy'

似乎build_path方法需要dict'params'而是接收一个字符串。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

感谢smarx的评论。该错误是一个已知问题,将在SDK的3.42版本中修复。 source