3

因此,有一段代码使用 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 身份验证调用任何博客方法时它失败了(例如 /followers):

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

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

4

2 回答 2

1

那是因为您的 OAuth 访问令牌授予您访问博客的权限。OAuth 无法授予您访问不属于您的博客方法的权限,因为这样您就可以向它们发帖。

于 2011-10-21T00:32:19.477 回答
0

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

我对 Zend_Oauth (php) 有同样的问题,但现在已经解决了。

于 2012-01-16T14:50:32.757 回答