Итак мы зарегистрировали приложение в предыдущем посте. И получили два пин-кода: ключ, и секрет. С помощью их мы можем теперь получить, если пользователь разрешит, пользовательский токен, и секрет - пользовательские пин-коды. Ключей везде по двое, что бы обеспечьте защиту канала связи.
По большому счёту если нет желания со всем этим заморачиваться - то и не надо, для это есть уже готовые библиотеки, сделанные прямо для авторизации в твиттере через GAE-приложение, и даже не одна. Я взял AppEngine-OAuth-Library by Mike Knapp, которая состоит из одного файла и маленьким примерчиком.
Собственно весь процесс авторизации выглядит следующим образом:
@route('/login')
@route('/login/')
def login_view():
callback_url = "http://%s/verify" % request.environ["HTTP_HOST"]
client = TwitterClient(TWITTER_KEY, TWITTER_SECRET, callback_url)
redirect(client.get_authorization_url())
@route('/verify')
@route('/verify/')
def verify_view():
callback_url = "http://%s/verify" % request.environ["HTTP_HOST"]
auth_token = request.GET.get('oauth_token', "")
auth_verifier = request.GET.get('oauth_verifier', "")
client = TwitterClient(TWITTER_KEY, TWITTER_SECRET, callback_url)
try:
user_info = client.get_user_info(auth_token, auth_verifier=auth_verifier)
except Exception, msg:
redirect("/")
set_cookie(user_info["uid"], user_info)
redirect("/")
Собственно запрос на авторизацию и её проверка. В случаее успеха имеем словарик сservice, token, secret, id, username, name, picture. Теперь в твиттер можно отправлять авторизованные запросы:
timeline_url = "http://twitter.com/statuses/user_timeline.xml"
result = client.make_request(url=timeline_url, token=user_token,
secret=user_secret)
Комментариев нет:
Отправить комментарий