Spaces:
Runtime error
Runtime error
Upload main_app.py
Browse files- main_app.py +19 -9
main_app.py
CHANGED
|
@@ -31,9 +31,24 @@ os.makedirs(USER_DATA_DIR, exist_ok=True)
|
|
| 31 |
# --- 2. ユーザー ID 判定(毎回再認証・再発行) ---
|
| 32 |
|
| 33 |
def get_current_user_id():
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
try:
|
| 38 |
api = HfApi()
|
| 39 |
user_info = whoami(token=hf_token)
|
|
@@ -43,12 +58,7 @@ def get_current_user_id():
|
|
| 43 |
st.warning(f"HF API エラー: {e}. 一時 UUID を使用します。")
|
| 44 |
user_id = str(uuid.uuid4())
|
| 45 |
is_hf_user = False
|
| 46 |
-
|
| 47 |
-
# トークンなしは毎回新規UUID
|
| 48 |
-
user_id = str(uuid.uuid4())
|
| 49 |
-
is_hf_user = False
|
| 50 |
-
# セッション状態に依存せず、毎回最新の認証結果を返す
|
| 51 |
-
return user_id, is_hf_user
|
| 52 |
|
| 53 |
|
| 54 |
user_id, is_hf_user = get_current_user_id()
|
|
|
|
| 31 |
# --- 2. ユーザー ID 判定(毎回再認証・再発行) ---
|
| 32 |
|
| 33 |
def get_current_user_id():
|
| 34 |
+
# OAuth認証情報を環境変数から取得
|
| 35 |
+
OAUTH_CLIENT_ID = os.getenv("OAUTH_CLIENT_ID")
|
| 36 |
+
OAUTH_CLIENT_SECRET = os.getenv("OAUTH_CLIENT_SECRET")
|
| 37 |
+
OAUTH_SCOPES = os.getenv("OAUTH_SCOPES", "openid profile email")
|
| 38 |
+
OPENID_PROVIDER_URL = os.getenv("OPENID_PROVIDER_URL", "https://huggingface.co")
|
| 39 |
+
|
| 40 |
+
# Streamlitセッションにトークンがなければ認証フロー
|
| 41 |
+
if "hf_token" not in st.session_state:
|
| 42 |
+
st.markdown("## HuggingFace OAuthログイン")
|
| 43 |
+
auth_url = f"{OPENID_PROVIDER_URL}/oauth/authorize?client_id={OAUTH_CLIENT_ID}&response_type=token&scope={OAUTH_SCOPES}"
|
| 44 |
+
if st.button("HuggingFaceでログイン"):
|
| 45 |
+
components.html(f"<script>window.location.href='{auth_url}';</script>", height=0)
|
| 46 |
+
st.info("ログイン後、アクセストークンが自動取得されます。")
|
| 47 |
+
user_id = str(uuid.uuid4())
|
| 48 |
+
is_hf_user = False
|
| 49 |
+
return user_id, is_hf_user
|
| 50 |
+
else:
|
| 51 |
+
hf_token = st.session_state["hf_token"]
|
| 52 |
try:
|
| 53 |
api = HfApi()
|
| 54 |
user_info = whoami(token=hf_token)
|
|
|
|
| 58 |
st.warning(f"HF API エラー: {e}. 一時 UUID を使用します。")
|
| 59 |
user_id = str(uuid.uuid4())
|
| 60 |
is_hf_user = False
|
| 61 |
+
return user_id, is_hf_user
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
|
| 63 |
|
| 64 |
user_id, is_hf_user = get_current_user_id()
|