Слияние кода завершено, страница обновится автоматически
liboauth2
Лёгкий Python-клиент для OAuth2
Установка
PIP:
pip install liboauth2
Easy Install:
easy_install liboauth2
Использование
# -*- coding: utf-8 -*-
import liboauth2
import urllib
from flask import Flask, redirect, request
CLIENT_ID = 'ваш client id'
CLIENT_SECRET = 'ваш client secret'
client = liboauth2.Client(CLIENT_ID, CLIENT_SECRET)
REDIRECT_URI = 'http://localhost:5000/callback/'
AUTH_URI = 'https://open.t.qq.com/cgi-bin/oauth2/authorize'
ACCESS_TOKEN_URL = 'https://open.t.qq.com/cgi-bin/oauth2/access_token'
app = Flask(__name__)
app.debug = True
@app.route('/')
def home():
# получаем URL авторизации
url = client.get_auth_url(AUTH_URI, REDIRECT_URI)
return redirect(url)
@app.route('/callback/')
def callback():
# получаем токен доступа
params = {'code': request.args['code'], 'redirect_uri': REDIRECT_URI}
resp = client.get_access_token(ACCESS_TOKEN_URL, liboauth2.GRANT_TYPE_AUTH_CODE, params)
def urldecode(values):
ret = {}
for s in values.split('&'):
if s.find('=') > -1:
k, v = map(urllib.unquote, s.split('='))
ret[k] = v
#ret.setdefault(k, []).append(v)
return ret
data = urldecode(resp['result'])
# устанавливаем токен доступа и запрашиваем информацию о пользователе
client.set_access_token(data['access_token'])
params = {
'oauth_consumer_key': CLIENT_ID,
'openid': data['openid'],
'clientip': request.remote_addr,
'oauth_version': '2.a',
}
resp = client.fetch('http://open.t.qq.com/api/user/info', params)
return str(resp['result'])
if __name__ == '__main__':
app.run(host='localhost', port=5000)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )