| # streamlit-google-oauth | |
| An example [Streamlit](https://streamlit.io/) application that incorporates Google OAuth 2.0 | |
| ## PIP | |
| ```bash | |
| pip install git+https://github.com/hunkim/streamlit-google-oauth | |
| ``` | |
| ## Setup Google OAuth client ID | |
| <img width="1434" alt="image" src="https://user-images.githubusercontent.com/901975/170391098-c3a79b40-283a-4f78-a318-c4603bb18bb9.png"> | |
| ### Make sure people api is enabled | |
| <img width="1070" alt="image" src="https://user-images.githubusercontent.com/901975/170388473-4664ce58-6a06-4237-9fbe-d88787f41c22.png"> | |
| ## Put client id, etc. in env | |
| Put in the .env file | |
| ```bash | |
| ~/streamlit-google-oauth$ cat .env | |
| GOOGLE_CLIENT_ID=767025784452-fscnojvddiek... | |
| GOOGLE_CLIENT_SECRET=GOCSPX-KE4_... | |
| GOOGLE_REDIRECT_URI=http://localhost:8080 | |
| ``` | |
| or | |
| ```bash | |
| export GOOGLE_CLIENT_ID="xxx" | |
| export GOOGLE_CLIENT_SECRET="yyy" | |
| export GOOGLE_REDIRECT_URI="http://localhost:8080" | |
| ``` | |
| ## Add login in your streamlit app | |
| ```python | |
| import streamlit as st | |
| import os | |
| from dotenv import load_dotenv | |
| import streamlit_google_oauth as oauth | |
| load_dotenv() | |
| client_id = os.environ["GOOGLE_CLIENT_ID"] | |
| client_secret = os.environ["GOOGLE_CLIENT_SECRET"] | |
| redirect_uri = os.environ["GOOGLE_REDIRECT_URI"] | |
| if __name__ == "__main__": | |
| login_info = oauth.login( | |
| client_id=client_id, | |
| client_secret=client_secret, | |
| redirect_uri=redirect_uri, | |
| login_button_text="Continue with Google", | |
| logout_button_text="Logout", | |
| ) | |
| if login_info: | |
| user_id, user_email = login_info | |
| st.write(f"Welcome {user_email}") | |
| else: | |
| st.write("Please login") | |
| ``` | |
| ## Run streamlit with google oauth | |
| ```bash | |
| streamlit run app.py --server.port 8080 | |
| ``` | |
| ## Quick demo screenshots | |
|  | |