From dcea7f163c80992ac1ba3eb8b3cd30dd0afd7626 Mon Sep 17 00:00:00 2001 From: wangzg Date: Wed, 20 Dec 2023 16:26:47 +0800 Subject: [PATCH] enableCORS = false lazy import discordoauth2 --- .streamlit/config.toml | 4 ++-- modules/discord_oauth.py | 32 ++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/.streamlit/config.toml b/.streamlit/config.toml index c534e84..d8514b7 100644 --- a/.streamlit/config.toml +++ b/.streamlit/config.toml @@ -68,7 +68,7 @@ baseUrlPath = "" # `server.enableXsrfProtection`. # Default: true -enableCORS = true +enableCORS = false # Enables support for Cross-Site Request Forgery (XSRF) protection, for added # security. @@ -78,7 +78,7 @@ enableCORS = true # `server.enableXsrfProtection`. # Default: true -enableXsrfProtection = true +enableXsrfProtection = false # Max size, in megabytes, for files uploaded with the file_uploader. diff --git a/modules/discord_oauth.py b/modules/discord_oauth.py index e095b9a..c6c7077 100644 --- a/modules/discord_oauth.py +++ b/modules/discord_oauth.py @@ -1,33 +1,45 @@ import os from loguru import logger -import discordoauth2 + import streamlit as st client_id = os.getenv('DISCORD_CLIENT_ID') client_secret = os.getenv('DISCORD_CLIENT_SECRET') redirect_uri = os.getenv('DISCORD_REDIRECT_URI') -client = discordoauth2.Client(client_id, secret=client_secret, redirect=redirect_uri) @st.cache_resource def get_client(): - return client + try: + import discordoauth2 + client = discordoauth2.Client(client_id, secret=client_secret, redirect=redirect_uri) + return client + except Exception as e: + logger.error(f"get_client error: {e}") + return None + @st.cache_data(ttl=60 * 60) def gen_authorization_url(): client = get_client() - authorization_url = client.generate_uri(scope=["identify", "email"]) - logger.debug(f"authorization_url: {authorization_url}") - return authorization_url + if client: + authorization_url = client.generate_uri(scope=["identify", "email"]) + logger.debug(f"authorization_url: {authorization_url}") + return authorization_url + else: + authorization_url = f"https://discord.com/oauth2/authorize?client_id={client_id}&scope=identify+email&redirect_uri={redirect_uri}&response_type=code" + logger.warning(f"discordoauth2 is none, default authorization_url : {authorization_url}") + return authorization_url def get_user_data(code): try: client = get_client() - access = client.exchange_code(code) - user_data = access.fetch_identify() - logger.debug(f"user_data: {user_data}") - return user_data + if client: + access = client.exchange_code(code) + user_data = access.fetch_identify() + logger.debug(f"user_data: {user_data}") + return user_data except Exception as e: logger.error(f"get_user_data error: {e}") return None