def register_service(name): if name == 'google': return google.register_to(social) if name == 'twitter': return twitter.register_to(social) if name == 'facebook': return facebook.register_to(social) if name == 'github': return github.register_to(social) if name == 'weibo': return weibo.register_to(social)
from flask_login import current_user, login_required from flask_oauthlib.client import OAuth from flask_oauthlib.contrib.apps import facebook as facebook_app, google as google_app from functools import wraps from werkzeug.exceptions import Forbidden from server.models import User app = OAuth() facebook_data = { 'fetch_query': '/me?fields=email,id,first_name,last_name,gender', 'oauth': facebook_app.register_to(app, app_key='FACEBOOK_OAUTH_PARAMS'), 'custom_fields': { 'first_name': 'first_name', 'last_name': 'last_name' } } google_data = { 'fetch_query': 'userinfo', 'oauth': google_app.register_to(app, app_key='GOOGLE_OAUTH_PARAMS'), 'custom_fields': { 'first_name': 'given_name', 'last_name': 'family_name' } } oauth_apps = {'facebook': facebook_data, 'google': google_data}
from flask_oauthlib.contrib.apps import facebook from flask_oauthlib.client import OAuth import tweepy from google_api import GoogleProvider def _make_token_getter(provider): def token_getter(): user = request.oauth.user return (user.get_provider_token(provider), "") return token_getter oauth = OAuth() facebook = facebook.register_to(oauth, scope=["public_profile", "email"]) facebook.tokengetter(_make_token_getter("facebook")) class TwitterProvider(object): @classmethod def make_auth(cls, callback_url=None, request_token=None, access_token=None): cons_key = current_app.config["TWITTER_CONSUMER_KEY"] cons_sec = current_app.config["TWITTER_CONSUMER_SECRET"] auth = tweepy.OAuthHandler(cons_key, cons_sec, callback_url) if request_token: auth.request_token = request_token if access_token: auth.set_access_token(*access_token.split("\n")) return auth
import tweepy from google_api import GoogleProvider def _make_token_getter(provider): def token_getter(): user = request.oauth.user return (user.get_provider_token(provider), "") return token_getter oauth = OAuth() facebook = facebook.register_to(oauth, scope=["public_profile", "email"]) facebook.tokengetter(_make_token_getter("facebook")) class TwitterProvider(object): @classmethod def make_auth(cls, callback_url=None, request_token=None, access_token=None): cons_key = current_app.config["TWITTER_CONSUMER_KEY"] cons_sec = current_app.config["TWITTER_CONSUMER_SECRET"] auth = tweepy.OAuthHandler(cons_key, cons_sec, callback_url) if request_token: auth.request_token = request_token