Login to your Flask app with Google
Python hosting: Host, run, and code Python in the cloud!
In this article you will learn how to use Google for login authentication in a Flask app. Instead of using a custom user login system, you could use Google to authenticate with your website. Your visitors may already have an account on Google, so why not use it to login?
To do so, we use a protocol called OAuth. From wikipedia:
OAuth is a protocol that utilizes tokens in order to access resources on behalf of a resource owner. Think giving a user the ability to give out a valet key to certain portions of your site. Many sites, such as Google, Facebook, and Twitter use OAuth for authenticating third party clients in order to access certain user resources.
Don’t worry if that sounds vague, we’ll take you through the steps.
Related course
Python Flask: Make Web Apps with Python
Visit https://code.google.com/apis/console/ and press on credentials. Click “Create new Client ID”.
Google oAuth CredentialsYou will see this screen popup:
create oauthType your information and press “Create Client ID”. You then have a Client ID and Client secret which you will need.
Login authentication with Google
We use a module called flask_oauth to authenticate with Google. It is maintained by Armin Ronacher, the creator of Flask, so you can be sure the module does not die. The module uses OAuth, a protocol that gives tokens in order to access resources. Other modules may not have as good support.
Copy the code below and set the client id and client secret that you got from Google above. Just replace the lines:
GOOGLE_CLIENT_ID = 'PUT CLIENT ID' |
Save the program as app.py
from flask import Flask, redirect, url_for, session |
Execute using:
python app.py |
You can then open the link to see the login screen. The app will simply return your account information encoded in JSON format once you accept.
Login to your Flask app with GoogleFinally, you can validate if the access token is set on new routes.
Download Flask Examples

Leave a Reply:
Very nice. Thanks for this straightforward example. Here is an updated version, using the newer library:
https://github.com/lepture/...