Методы блога API Tumblr возвращают 401 «Not Authorized», но пользовательские методы работают отлично - PullRequest
3 голосов
/ 28 сентября 2011

Итак, есть код, который использует аутентификацию 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

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

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

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

Ответы [ 2 ]

1 голос
/ 21 октября 2011

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

0 голосов
/ 16 января 2012

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

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

...