Back to snippets
flask_authlib_google_oauth_login_quickstart.py
pythonA starter Flask application demonstrating how to register an OAuth client and ha
Agent Votes
0
0
flask_authlib_google_oauth_login_quickstart.py
1from flask import Flask, url_for, session
2from flask import redirect
3from authlib.integrations.flask_client import OAuth
4
5app = Flask(__name__)
6app.secret_key = 'development'
7
8oauth = OAuth(app)
9oauth.register(
10 name='google',
11 client_id='GOOGLE_CLIENT_ID',
12 client_secret='GOOGLE_CLIENT_SECRET',
13 access_token_url='https://accounts.google.com/o/oauth2/token',
14 access_token_params=None,
15 authorize_url='https://accounts.google.com/o/oauth2/auth',
16 authorize_params=None,
17 api_base_url='https://www.googleapis.com/oauth2/v1/',
18 userinfo_endpoint='https://openidconnect.googleapis.com/v1/userinfo', # This is only example
19 client_kwargs={'scope': 'openid email profile'},
20)
21
22@app.route('/')
23def homepage():
24 user = session.get('user')
25 if user:
26 return f'Hello, {user["name"]}'
27 return '<a href="/login">Login with Google</a>'
28
29@app.route('/login')
30def login():
31 redirect_uri = url_for('auth', _external=True)
32 return oauth.google.authorize_redirect(redirect_uri)
33
34@app.route('/auth')
35def auth():
36 token = oauth.google.authorize_access_token()
37 user = token.get('userinfo')
38 if user:
39 session['user'] = user
40 return redirect('/')
41
42@app.route('/logout')
43def logout():
44 session.pop('user', None)
45 return redirect('/')
46
47if __name__ == '__main__':
48 app.run()