Skip to content

Commit b10a1a7

Browse files
committed
updated to reflect latest blog post
1 parent 5a44254 commit b10a1a7

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

google_auth.py

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
AUTH_STATE_KEY = 'auth_state'
2222
USER_INFO_KEY = 'user_info'
2323

24-
app = flask.Flask(__name__)
24+
app = flask.Flask(__name__)
2525
app.secret_key = os.environ.get("FN_FLASK_SECRET_KEY", default=False)
2626

2727
@app.route('/')
@@ -46,20 +46,35 @@ def no_cache_impl(*args, **kwargs):
4646
@app.route('/google/login')
4747
@no_cache
4848
def login():
49-
session = OAuth2Session(CLIENT_ID, CLIENT_SECRET, scope=AUTHORIZATION_SCOPE, redirect_uri=AUTH_REDIRECT_URI)
49+
session = OAuth2Session(CLIENT_ID, CLIENT_SECRET,
50+
scope=AUTHORIZATION_SCOPE,
51+
redirect_uri=AUTH_REDIRECT_URI)
52+
5053
uri, state = session.authorization_url(AUTHORIZATION_URL)
54+
5155
flask.session[AUTH_STATE_KEY] = state
5256
flask.session.permanent = True
53-
return flask.redirect(uri, code=302)
5457

58+
return flask.redirect(uri, code=302)
5559

5660
@app.route('/google/auth')
5761
@no_cache
5862
def google_auth_redirect():
59-
state = flask.request.args.get('state', default=None, type=None)
63+
req_state = flask.request.args.get('state', default=None, type=None)
64+
65+
if req_state != flask.session[AUTH_STATE_KEY]:
66+
response = flask.make_response('Invalid state parameter', 401)
67+
return response
6068

61-
session = OAuth2Session(CLIENT_ID, CLIENT_SECRET, scope=AUTHORIZATION_SCOPE, state=state, redirect_uri=AUTH_REDIRECT_URI)
62-
oauth2_tokens = session.fetch_access_token(ACCESS_TOKEN_URI, authorization_response=flask.request.url)
69+
session = OAuth2Session(CLIENT_ID, CLIENT_SECRET,
70+
scope=AUTHORIZATION_SCOPE,
71+
state=flask.session[AUTH_STATE_KEY],
72+
redirect_uri=AUTH_REDIRECT_URI)
73+
74+
oauth2_tokens = session.fetch_access_token(
75+
ACCESS_TOKEN_URI,
76+
authorization_response=flask.request.url)
77+
6378
flask.session[AUTH_TOKEN_KEY] = oauth2_tokens
6479

6580
return flask.redirect(BASE_URI, code=302)
@@ -81,14 +96,19 @@ def build_credentials():
8196
raise Exception('User must be logged in')
8297

8398
oauth2_tokens = flask.session[AUTH_TOKEN_KEY]
99+
84100
return google.oauth2.credentials.Credentials(
85-
oauth2_tokens['access_token'],
86-
refresh_token=oauth2_tokens['refresh_token'],
87-
client_id=CLIENT_ID,
88-
client_secret=CLIENT_SECRET,
89-
token_uri=ACCESS_TOKEN_URI)
101+
oauth2_tokens['access_token'],
102+
refresh_token=oauth2_tokens['refresh_token'],
103+
client_id=CLIENT_ID,
104+
client_secret=CLIENT_SECRET,
105+
token_uri=ACCESS_TOKEN_URI)
90106

91107
def get_user_info():
92108
credentials = build_credentials()
93-
oauth2_client = googleapiclient.discovery.build('oauth2', 'v2', credentials=credentials)
109+
110+
oauth2_client = googleapiclient.discovery.build(
111+
'oauth2', 'v2',
112+
credentials=credentials)
113+
94114
return oauth2_client.userinfo().get().execute()

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
authlib==0.10
1+
authlib==0.11
22
flask==1.0.2
33
google-api-python-client
44
google-auth

0 commit comments

Comments
 (0)