sirochild commited on
Commit
f4cc2ac
·
verified ·
1 Parent(s): 419ebd9

Upload main_app.py

Browse files
Files changed (1) hide show
  1. main_app.py +13 -30
main_app.py CHANGED
@@ -1417,53 +1417,36 @@ def render_chat_tab_content(managers):
1417
  # --- 未ログインの画面 ---
1418
 
1419
  # 2. Hugging Faceからのリダイレクト直後か確認 (URLに 'code' があるか)
1420
- query_params = st.query_params
1421
- auth_code = query_params.get("code")
1422
 
1423
- if auth_code:
1424
- # 3. 認可コードがあれば、トークン取得とユーザー情報取得を実行
1425
  redirect_uri = get_redirect_uri()
1426
  token_data = get_hf_token(auth_code, redirect_uri)
1427
-
1428
  if token_data:
1429
  st.session_state['token_data'] = token_data
1430
  user_data = get_user_info(token_data['access_token'])
1431
-
1432
- if user_data:
1433
- st.session_state['user_data'] = user_data
1434
-
1435
- # URLから 'code' を消去してページを再読み込みし、ログイン後の画面を表示
1436
- st.query_params.clear()
1437
  st.rerun()
1438
-
1439
  else:
1440
- # 4. 初期アクセス時(未ログイン状態)
1441
  st.warning("現在ログインしていません。")
1442
-
1443
  if not CLIENT_ID or not CLIENT_SECRET:
1444
  st.error("OAuthクライアントが設定されていません。SpaceのREADME.mdを確認し、再起動してください。")
1445
  else:
1446
- # ログインURLを生成
1447
  redirect_uri = get_redirect_uri()
1448
- params = {
1449
- "client_id": CLIENT_ID,
1450
- "redirect_uri": redirect_uri,
1451
- "scope": "openid profile", # 取得したい情報の範囲
1452
- "state": "STATE_STRING", # CSRF対策のためランダムな文字列を推奨
1453
- "response_type": "code",
1454
- }
1455
  login_url = f"{HF_ENDPOINT}/oauth/authorize?{urlencode(params)}"
1456
-
1457
  st.markdown(f'<a href="{login_url}" target="_self" style="display: inline-block; padding: 10px 20px; background-color: #FFD21E; color: black; text-align: center; text-decoration: none; border-radius: 5px; font-weight: bold;">🤗 Hugging Faceでログイン</a>', unsafe_allow_html=True)
1458
-
1459
-
1460
- try:
1461
  # 永続ストレージから確認
1462
  # persistent_user_manager 完全廃止
1463
  has_saved_data = user_info is not None and "game_data" in user_info
1464
  if has_saved_data:
1465
  logger.debug("永続ストレージに保存データを確認")
1466
- except Exception as e:
1467
  logger.warning(f"永続ストレージ確認エラー、フォールバック使用: {e}")
1468
  # フォールバック: 従来のローカルファイル方式
1469
  has_saved_data = user_id_manager.is_user_data_exists()
@@ -1471,7 +1454,7 @@ def render_chat_tab_content(managers):
1471
  user_info = user_id_manager.get_user_info()
1472
  logger.debug("フォールバック: ローカルファイルに保存データを確認")
1473
 
1474
- if has_saved_data and user_info and "game_data" in user_info:
1475
  # 保存データがある場合の情報表示
1476
  game_data = user_info["game_data"]
1477
  if game_data:
@@ -1490,7 +1473,7 @@ def render_chat_tab_content(managers):
1490
  storage_type = "🌐 永続ストレージ" if user_info.get("storage_type") != "local" else "📁 ローカル"
1491
  st.info(f"💾 保存データあり ({storage_type})\n好感度: {saved_affection}/100\nメッセージ: {saved_messages}件\n保存日時: {saved_at}")
1492
 
1493
- if st.button("💾 ゲームデータを保存", help="現在の進行状況(好感度、チャット履歴など)をファイルに保存します", use_container_width=True):
1494
  success = save_game_data_to_file(managers)
1495
  if success:
1496
  st.success("✅ ゲ���ムデータを保存しました!")
@@ -1501,7 +1484,7 @@ def render_chat_tab_content(managers):
1501
  else:
1502
  st.error("❌ ゲームデータの保存に失敗しました。")
1503
 
1504
- with st.expander("⚙️ 設定"):
1505
  # 設定ボタン内の表示を大きくするCSS
1506
  settings_css = """
1507
  <style>
 
1417
  # --- 未ログインの画面 ---
1418
 
1419
  # 2. Hugging Faceからのリダイレクト直後か確認 (URLに 'code' があるか)
1420
+ query_params = st.experimental_get_query_params()
1421
+ auth_code_list = query_params.get("code",[])
1422
 
1423
+ if auth_code_list:
1424
+ auth_code = auth_code_list[0]
1425
  redirect_uri = get_redirect_uri()
1426
  token_data = get_hf_token(auth_code, redirect_uri)
 
1427
  if token_data:
1428
  st.session_state['token_data'] = token_data
1429
  user_data = get_user_info(token_data['access_token'])
1430
+ if user_data: st.session_state['user_data'] = user_data
1431
+ st.experimental_set_query_params()
 
 
 
 
1432
  st.rerun()
 
1433
  else:
 
1434
  st.warning("現在ログインしていません。")
 
1435
  if not CLIENT_ID or not CLIENT_SECRET:
1436
  st.error("OAuthクライアントが設定されていません。SpaceのREADME.mdを確認し、再起動してください。")
1437
  else:
 
1438
  redirect_uri = get_redirect_uri()
1439
+ params = { "client_id": CLIENT_ID, "redirect_uri": redirect_uri, "scope": "openid profile", "state": "STATE_STRING", "response_type": "code", }
 
 
 
 
 
 
1440
  login_url = f"{HF_ENDPOINT}/oauth/authorize?{urlencode(params)}"
 
1441
  st.markdown(f'<a href="{login_url}" target="_self" style="display: inline-block; padding: 10px 20px; background-color: #FFD21E; color: black; text-align: center; text-decoration: none; border-radius: 5px; font-weight: bold;">🤗 Hugging Faceでログイン</a>', unsafe_allow_html=True)
1442
+
1443
+ try:
 
1444
  # 永続ストレージから確認
1445
  # persistent_user_manager 完全廃止
1446
  has_saved_data = user_info is not None and "game_data" in user_info
1447
  if has_saved_data:
1448
  logger.debug("永続ストレージに保存データを確認")
1449
+ except Exception as e:
1450
  logger.warning(f"永続ストレージ確認エラー、フォールバック使用: {e}")
1451
  # フォールバック: 従来のローカルファイル方式
1452
  has_saved_data = user_id_manager.is_user_data_exists()
 
1454
  user_info = user_id_manager.get_user_info()
1455
  logger.debug("フォールバック: ローカルファイルに保存データを確認")
1456
 
1457
+ if has_saved_data and user_info and "game_data" in user_info:
1458
  # 保存データがある場合の情報表示
1459
  game_data = user_info["game_data"]
1460
  if game_data:
 
1473
  storage_type = "🌐 永続ストレージ" if user_info.get("storage_type") != "local" else "📁 ローカル"
1474
  st.info(f"💾 保存データあり ({storage_type})\n好感度: {saved_affection}/100\nメッセージ: {saved_messages}件\n保存日時: {saved_at}")
1475
 
1476
+ if st.button("💾 ゲームデータを保存", help="現在の進行状況(好感度、チャット履歴など)をファイルに保存します", use_container_width=True):
1477
  success = save_game_data_to_file(managers)
1478
  if success:
1479
  st.success("✅ ゲ���ムデータを保存しました!")
 
1484
  else:
1485
  st.error("❌ ゲームデータの保存に失敗しました。")
1486
 
1487
+ with st.expander("⚙️ 設定"):
1488
  # 設定ボタン内の表示を大きくするCSS
1489
  settings_css = """
1490
  <style>