Сначала импортируйте модуль oauth2 и настройте URL-адрес службы и информацию о потребителе:
import oauth2
REQUEST_TOKEN_URL = 'http://www.tumblr.com/oauth/request_token'
AUTHORIZATION_URL = 'http://www.tumblr.com/oauth/authorize'
ACCESS_TOKEN_URL = 'http://www.tumblr.com/oauth/access_token'
CONSUMER_KEY = 'your_consumer_key'
CONSUMER_SECRET = 'your_consumer_secret'
consumer = oauth2.Consumer(CONSUMER_KEY, CONSUMER_SECRET)
client = oauth2.Client(consumer)
Шаг 1: Получить токен запроса. Это временный токен, который используется для
пользователь авторизует токен доступа и подписывает запрос на получение
указанный токен доступа.
resp, content = client.request(REQUEST_TOKEN_URL, "GET")
request_token = dict(urlparse.parse_qsl(content))
print "Request Token:"
print " - oauth_token = %s" % request_token['oauth_token']
print " - oauth_token_secret = %s" % request_token['oauth_token_secret']
Шаг 2. Перенаправление на провайдера. Так как это скрипт CLI, мы не
перенаправления. В веб-приложении вы будете перенаправлять пользователя на URL
ниже.
print "Go to the following link in your browser:"
print "%s?oauth_token=%s" % (AUTHORIZATION_URL, request_token['oauth_token'])
# After the user has granted access to you, the consumer, the provider will
# redirect you to whatever URL you have told them to redirect to. You can
# usually define this in the oauth_callback argument as well.
oauth_verifier = raw_input('What is the PIN? ')
Шаг 3: Как только потребитель перенаправил пользователя обратно на oauth_callback
URL вы можете запросить токен доступа, который одобрил пользователь. Вы используете
токен запроса, чтобы подписать этот запрос. После этого вы выбрасываете
запросить токен и использовать возвращенный токен доступа. Вы должны хранить это
токен доступа в безопасном месте, например, в базе данных, для будущего использования.
token = oauth2.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
token.set_verifier(oauth_verifier)
client = oauth2.Client(consumer, token)
resp, content = client.request(ACCESS_TOKEN_URL, "POST")
access_token = dict(urlparse.parse_qsl(content))
print "Access Token:"
print " - oauth_token = %s" % access_token['oauth_token']
print " - oauth_token_secret = %s" % access_token['oauth_token_secret']
print
Теперь, когда у вас есть токен доступа, вы можете вызывать защищенные методы с его помощью.
РЕДАКТИРОВАТЬ: Оказывается, что Tumblr не поддерживает метод авторизации PIN-кода. Соответствующий пост здесь .