python oauth2 客户端:liboauth2

jopen 11年前

liboauth2 是一个轻量级的oauth2 python客户端。

支持四种授权模式(mac, oauth, bearer, uri)

安装

easy_install liboauth2

腾讯微博演示

# -*- coding: utf-8 -*-      import liboauth2  import urllib  from flask import Flask, redirect, request      CLIENT_ID = 'you client id'  CLIENT_SECRET = 'you 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():      # get auth url      url = client.get_auth_url(AUTH_URI, REDIRECT_URI)      return redirect(url)      @app.route('/callback/')  def callback():      # get access token      params = {'code': request.args['code'], 'redirect_uri': REDIRECT_URI}      resp = client.get_access_token(ACCESS_TOKEN_URL, liboauth2.GRANT_TYPE_AUTH_CODE, params)      # print resp      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'])      # set access token and query user info      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)

项目主页:http://www.open-open.com/lib/view/home/1374328205933