Методы Tumblr API Blog возвращают 401 Not Authorized, но пользовательские методы работают отлично

Итак, есть код, который использует аутентификацию xAuth для вызова методов API tumblr:

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': '[email protected]',
    '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

Он отлично работает с методами пользователя из API tumblr, которые требуют аутентификации OAuth. Но это не удается, когда я пытаюсь вызвать любой метод блога с аутентификацией OAuth (например, /followers):

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

Кроме одного. Если я использую имя своего блога в качестве параметра {base-hostname}, он работает без ошибок. Странный. Как это возможно? Что-то не так с кодом?


person clumpter    schedule 28.09.2011    source источник
comment
clumpter, у вас есть какие-либо методы API на основе POST для работы с tumblr?   -  person Chris J    schedule 23.10.2011


Ответы (2)


Ну, это потому, что ваш токен доступа OAuth предоставляет вам доступ к вашим блогам. OAuth не может дать вам разрешение на доступ к методам блога, которыми вы не владеете, потому что тогда вы могли бы публиковать сообщения в них.

person Chris J    schedule 21.10.2011

Когда вы делаете запрос POST, enctype должен быть «multipart/form-data».

У меня была такая же проблема с Zend_Oauth (php), но теперь она решена.

person David Zeller    schedule 16.01.2012
comment
Это не OAuth, который терпит неудачу для OP; дело в том, что токен OAuth не дает достаточного доступа для использования методов блога. - person Martijn Pieters; 27.10.2012