a simple, lightweight oauth client
- python 2.7+
- python 3.3+
- Github
- Other...
-
create client
- put
oauth2py.json
in your app root folder
[{ "name": "github", "client_id": "", "client_secret": "", "redirect_uri": "", "scope": "" }, { "name": "twitter", "client_id": "", "client_secret": "", "redirect_uri": "", "scope": "" }]
from oauth2py.client import OauthClient as oauth github = oauth.load('github')
- or set config in code
github.init({ 'client_id': '', 'client_secret': '', 'redirect_uri': '', 'scope': '' })
- put
-
oauth
- get login url
url = github.get_login_url(state='abc')
- get user info
user = github.get_user_info('code=12345&state=abc') # or user = github.get_user_info({'code': '12345', 'state': 'abc'})
- save access token
token = github.get_access_token() # save token ...
-
access resource
- get github repo list
github.set_access_token({ 'access_token': '...' }) github.access_resource( 'GET', 'https://api.github.com/user/repos')
- another example: post status to twitter
twitter.set_access_token({ 'access_token': '...', 'access_token_secret': '...' } ) twitter.access_resource( 'POST', url='https://api.twitter.com/1.1/statuses/update.json', data={ 'status': 'test from oauth2py!' } )
-
inherit
oauth2py.Oauth2
oroauth2py.Oauth
and set oauth urlsclass Github(Oauth2): NAME = 'Github' AUTHORIZATION_URL = 'https://github.com/login/oauth/authorize' ACCESS_TOKEN_URL = 'https://github.com/login/oauth/access_token' GET_USERINFO_URL = 'https://api.github.com/user' def __init__(self): super(Github, self).__init__()
-
parse user info from response
def parse_user_info(self, response): return { 'uid': str(response.get('id')), 'name': response.get('name'), 'avatar': response.get('avatar_url'), 'raw': response }