Я ищу учебник/пример/объяснение о написании двустороннего провайдера для OAuth в Django.
Трудно найти документацию о провайдере OAuth, а еще сложнее о двухсторонней системе...
Я ищу учебник/пример/объяснение о написании двустороннего провайдера для OAuth в Django.
Трудно найти документацию о провайдере OAuth, а еще сложнее о двухсторонней системе...
«Двухсторонний» — это обычный запрос OAuth без токена доступа или секретного токена доступа. Вот и все. Вы по-прежнему используете учетные данные клиента (идентификатор и секрет), но используете пустые строки для параметров токена доступа. В зависимости от используемой серверной библиотеки вы можете опустить параметр oauth_token при выполнении запроса.
Я потратил около 3 дней, пытаясь понять это, и хотел предоставить всем, кто может его использовать, этот рабочий пример, который я наконец получил от службы, которую я пытался запросить. Это оказалось чрезвычайно легко. P.S. Тот факт, что кто-то использует oauth 1.0, не означает, что вы не можете использовать библиотеку oauth2.
Чтобы получить auth2, введите pip install oauth2.
В вашем скрипте вам нужно:
import oauth2
import time
import urllib2
def build_request(url, method='GET'):
params = {
'oauth_version': "1.0",
'oauth_nonce': oauth2.generate_nonce(),
'oauth_timestamp': int(time.time())
}
consumer = oauth2.Consumer(key='python_test',secret='your_secret')
params['oauth_consumer_key'] = consumer.key
req = oauth2.Request(method=method, url=url, parameters=params)
signature_method = oauth2.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, None)
return req
Вызов функции и просмотр вывода выглядит так:
request = build_request('http://demo.echo360.com/ess/scheduleapi/v1/terms')
u = urllib2.urlopen(request.to_url())
print u.readlines()
Это хорошая стартовая статья: http://philipsoutham.com/post/2172924723/two-legged-oauth-in-python
Двухсторонний OAuth для поршня: https://github.com/gregbayer/django-piston-two-legged-oauth