Tumblr API博客方法返回401“未授权”,但用户方法完美无缺

时间:2011-09-28 19:29:11

标签: python oauth tumblr xauth token

因此,有一个代码使用xAuth身份验证来调用tumblr API方法:

import urllib
import urlparse
import oauth2 as oauth

consumer_key     = "..."
consumer_secret  = "..."

consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)

resp, content = client.request('https://www.tumblr.com/oauth/access_token', "POST", urllib.urlencode({
    'x_auth_mode': 'client_auth',
    'x_auth_username': '...@yandex.ru',
    'x_auth_password': '...'
}))

token = dict(urlparse.parse_qsl(content))
print token

token = oauth.Token(token['oauth_token'], token['oauth_token_secret'])
client = oauth.Client(consumer, token)

response, data = client.request('http://api.tumblr.com/v2/blog/good.tumblr.com/followers', method='GET') 
print data

它适用于需要OAuth身份验证的tumblr API用户方法。 但是当我尝试使用OAuth身份验证(例如/粉丝)调用任何Blog方法时,它失败了:

{"meta":{"status":401,"msg":"Not Authorized"},"response":[]}

除了一件事。如果我使用我的博客名称作为{base-hostname}参数,它的工作没有任何错误。 奇怪的。怎么可能?代码有问题吗?

2 个答案:

答案 0 :(得分:1)

那是因为您的OAuth访问令牌授予您访问博客的权限。 OAuth无法授予您访问您不拥有的博客方法的权限,因为您可以向他们发帖。

答案 1 :(得分:0)

当你发出POST请求时,enctype必须是“multipart / form-data”。

我在使用Zend_Oauth(php)时遇到了同样的问题,但现在已经解决了。