sgbaird's picture
refactor: Update REDIRECT_URI in app.py
39e124b
"""https://chatgpt.com/share/131b6bdf-373e-4b85-83ae-212ce368e42c"""
import streamlit as st
from auth0.authentication import GetToken, Users
import os
# Auth0 Configuration
DOMAIN = os.getenv("AUTH0_DOMAIN")
CLIENT_ID = os.getenv("AUTH0_CLIENT_ID")
CLIENT_SECRET = os.getenv("AUTH0_CLIENT_SECRET")
API_IDENTIFIER = os.getenv("API_IDENTIFIER")
REDIRECT_URI = (
"https://huggingface.co/spaces/AccelerationConsortium/hardware-auth-example"
)
# Function to handle Auth0 login
def login():
login_url = (
f"https://{DOMAIN}/authorize?response_type=code&client_id={CLIENT_ID}"
f"&redirect_uri={REDIRECT_URI}&scope=openid%20profile%20email&audience={API_IDENTIFIER}"
)
st.markdown(f"[Login]({login_url})", unsafe_allow_html=True)
# Function to get tokens using auth code
def get_token(auth_code):
get_token = GetToken(DOMAIN)
return get_token.authorization_code(
CLIENT_ID, CLIENT_SECRET, auth_code, REDIRECT_URI
)
# Function to get user info using the access token
def get_user_info(access_token):
users = Users(DOMAIN)
return users.userinfo(access_token)
# Streamlit App
st.title("Streamlit App with Auth0 for HiveMQ")
if "auth_code" not in st.session_state:
st.session_state.auth_code = None
if st.session_state.auth_code:
token_info = get_token(st.session_state.auth_code)
access_token = token_info["access_token"]
user_info = get_user_info(access_token)
if user_info["email_verified"]:
st.write("Access Token for HiveMQ:", access_token)
else:
st.error("Please verify your email address to receive the token.")
else:
if st.button("Login"):
login()
# To handle the callback
if "code" in st.query_params:
st.session_state.auth_code = st.query_params["code"][0]