from
flask
import
Flask, render_template, url_for, redirect
from
authlib.integrations.flask_client
import
OAuth
import
os
app
=
Flask(__name__)
app.secret_key
=
'\xfd{H\xe5<\x95\xf9\xe3\x96.
5
\xd1\x01O
/
<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
app.config[
'SERVER_NAME'
]
=
'localhost:5000'
oauth
=
OAuth(app)
@app
.route(
'/'
)
def
index():
return
render_template(
'index.html'
)
@app
.route(
'/google/'
)
def
google():
GOOGLE_CLIENT_ID
=
os.environ.get(
'GOOGLE_CLIENT_ID'
)
GOOGLE_CLIENT_SECRET
=
os.environ.get(
'GOOGLE_CLIENT_SECRET'
)
oauth.register(
name
=
'google'
,
client_id
=
GOOGLE_CLIENT_ID,
client_secret
=
GOOGLE_CLIENT_SECRET,
server_metadata_url
=
CONF_URL,
client_kwargs
=
{
'scope'
:
'openid email profile'
}
)
redirect_uri
=
url_for(
'google_auth'
, _external
=
True
)
return
oauth.google.authorize_redirect(redirect_uri)
@app
.route(
'/google/auth/'
)
def
google_auth():
token
=
oauth.google.authorize_access_token()
user
=
oauth.google.parse_id_token(token)
print
(
" Google User "
, user)
return
redirect(
'/'
)
@app
.route(
'/twitter/'
)
def
twitter():
TWITTER_CLIENT_ID
=
os.environ.get(
'TWITTER_CLIENT_ID'
)
TWITTER_CLIENT_SECRET
=
os.environ.get(
'TWITTER_CLIENT_SECRET'
)
oauth.register(
name
=
'twitter'
,
client_id
=
TWITTER_CLIENT_ID,
client_secret
=
TWITTER_CLIENT_SECRET,
request_token_params
=
None
,
access_token_params
=
None
,
authorize_params
=
None
,
client_kwargs
=
None
,
)
redirect_uri
=
url_for(
'twitter_auth'
, _external
=
True
)
return
oauth.twitter.authorize_redirect(redirect_uri)
@app
.route(
'/twitter/auth/'
)
def
twitter_auth():
token
=
oauth.twitter.authorize_access_token()
resp
=
oauth.twitter.get(
'account/verify_credentials.json'
)
profile
=
resp.json()
print
(
" Twitter User"
, profile)
return
redirect(
'/'
)
@app
.route(
'/facebook/'
)
def
facebook():
FACEBOOK_CLIENT_ID
=
os.environ.get(
'FACEBOOK_CLIENT_ID'
)
FACEBOOK_CLIENT_SECRET
=
os.environ.get(
'FACEBOOK_CLIENT_SECRET'
)
oauth.register(
name
=
'facebook'
,
client_id
=
FACEBOOK_CLIENT_ID,
client_secret
=
FACEBOOK_CLIENT_SECRET,
access_token_params
=
None
,
authorize_params
=
None
,
client_kwargs
=
{
'scope'
:
'email'
},
)
redirect_uri
=
url_for(
'facebook_auth'
, _external
=
True
)
return
oauth.facebook.authorize_redirect(redirect_uri)
@app
.route(
'/facebook/auth/'
)
def
facebook_auth():
token
=
oauth.facebook.authorize_access_token()
resp
=
oauth.facebook.get(
profile
=
resp.json()
print
(
"Facebook User "
, profile)
return
redirect(
'/'
)
if
__name__
=
=
"__main__"
:
app.run(debug
=
True
)