define tokengetter for each provider
Этот коммит содержится в:
Matthew Scragg 2015-11-13 17:25:55 -06:00
родитель 027abd0658
Коммит 1e62997272
2 изменённых файлов: 7 добавлений и 5 удалений

Просмотреть файл

@ -36,9 +36,9 @@ providers = {
'button': '<a href="/login/oauth/github" class="btn btn-default"><i class="fa fa-github"></i> Github</a>',
'profile': 'user',
'field_map': {
'id': ['user', 'id'],
'username': ['user', 'login'],
'email': ['user', 'email']
'id': 'id',
'username': 'login',
'email': 'email'
},
'token_name': 'access_token'
},
@ -141,12 +141,14 @@ class User(BaseUser):
def get_app(cls, provider):
if oauth.remote_apps.get(provider):
return oauth.remote_apps.get(provider)
return oauth.remote_app(
app = oauth.remote_app(
provider,
consumer_key=config.OAUTH.get(provider, {}).get('key'),
consumer_secret=config.OAUTH.get(provider, {}).get(
'secret'),
**providers[provider]['oauth'])
app.tokengetter(lambda: session.get(provider + "_token"))
return app
@classmethod
def get_provider_value(cls, provider, key):

Просмотреть файл

@ -32,7 +32,7 @@ def callback(provider):
oauth_token = resp.get(User.get_provider_value(provider, 'token_name'))
session[provider + "_token"] = (oauth_token, '')
profile = User.get_provider_value(provider, 'profile')
data = remote_app.get(profile) if profile else resp
data = remote_app.get(profile).data if profile else resp
User.auth(provider, data, oauth_token)