首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python dropbox api错误

python dropbox api错误
EN

Stack Overflow用户
提问于 2012-05-11 01:41:59
回答 2查看 2.9K关注 0票数 0

我正在学习教程here

到目前为止一切都很好,但是上传的例子给了我错误。代码:

代码语言:javascript
运行
复制
from dropbox import client, rest, session

f = open('txt2.txt') # upload a file
response = client.put_file('/magnum-opus.txt', f)
print "uploaded:", response

错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "dropbox_ul.py", line 4, in <module>
    response = client.put_file('/magnum-opus.txt', f)
AttributeError: 'module' object has no attribute 'put_file'

我哪里错了?

编辑:我正在尝试的新代码。这实际上来自于dropbox开发者网站。如前所述,我确实完成了身份验证和设置:

代码语言:javascript
运行
复制
# Include the Dropbox SDK libraries
from dropbox import client, rest, session

# Get your app key and secret from the Dropbox developer website
APP_KEY = 'iqxjea6s7ctxv9j'
APP_SECRET = 'npac0nca3p3ct9f'

# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app
ACCESS_TYPE = 'dropbox'

sess = session.DropboxSession(APP_KEY,APP_SECRET, ACCESS_TYPE )

request_token = sess.obtain_request_token()

# Make the user sign in and authorize this token
url = sess.build_authorize_url(request_token)
print "url:", url
print "Please authorize in the browser. After you're done, press enter."
raw_input()

# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)

client = client.DropboxClient(sess)
print "linked account:", client.account_info()

f = open('txt2.txt')
response = client.put_file('/magnum-opus.txt', f)
print "uploaded:", response

folder_metadata = client.metadata('/')
print "metadata:", folder_metadata

f, metadata = client.get_file_and_metadata('/magnum-opus.txt',rev='362e2029684fe')
out = open('magnum-opus.txt', 'w')
out.write(f)
print(metadata)

以及错误:

代码语言:javascript
运行
复制
   url: https://www.dropbox.com/1/oauth/authorize?oauth_token=jqbasca63c0a84m
    Please authorize in the browser. After you're done, press enter.

    linked account: {'referral_link': 'https://www.dropbox.com/referrals/NTMxMzM4NjY5', 'display_name': 'Greg Lorincz', 'uid': 3133866, 'country': 'GB', 'quota_info': {'shared': 78211, 'quota': 28185722880, 'normal': 468671581}, 'email': 'alkopop79@gmail.com'}
    Traceback (most recent call last):
      File "dropb.py", line 28, in <module>
        response = client.put_file('/magnum-opus.txt', f)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dropbox-1.4-py2.7.egg/dropbox/client.py", line 149, in put_file
        return RESTClient.PUT(url, file_obj, headers)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dropbox-1.4-py2.7.egg/dropbox/rest.py", line 146, in PUT
        return cls.request("PUT", url, body=body, headers=headers, raw_response=raw_response)
      File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dropbox-1.4-py2.7.egg/dropbox/rest.py", line 113, in request
        raise ErrorResponse(r)
    dropbox.rest.ErrorResponse: [403] 'The provided token does not allow this operation'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-11 01:52:02

您尚未初始化客户端对象。再次参考教程,您将看到以下内容:

代码语言:javascript
运行
复制
client = client.DropboxClient(sess)

在调用客户端模块的DropboxClient方法之前,还必须初始化sess对象:

代码语言:javascript
运行
复制
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)

在注册应用程序时,应该为您分配了所有必需的参数(即APP_KEY、APP_SECRET、ACCESS_TYPE)。

票数 2
EN

Stack Overflow用户

发布于 2013-10-27 21:42:01

我按照你编辑过的代码做了修改,一切都很顺利。

代码语言:javascript
运行
复制
from dropbox import client, rest, session

# Get your app key and secret from the Dropbox developer website
app_key = 'enter-your-app_key'
app_secret = 'enter-your-app_secret'

ACCESS_TYPE = 'dropbox'

sess = session.DropboxSession(app_key, app_secret, ACCESS_TYPE )

request_token = sess.obtain_request_token()

# Make the user sign in and authorize this token
url = sess.build_authorize_url(request_token)
print "url:", url
print "Please authorize in the browser. After you're done, press enter."
raw_input()

# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)

client = client.DropboxClient(sess)
print "linked account:", client.account_info()

f = open('/home/anurag/Documents/sayan.odt')
response = client.put_file('/sayan.odt', f)
print "uploaded:", response

注意系统上的响应和文件位置,在您的代码中不匹配。

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10539442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档