Spaces:
Running
Running
testcoder-ui commited on
Commit ·
acecd04
1
Parent(s): 6d30548
Fix OAuth username extraction: access userinfo nested dict
Browse files
app.py
CHANGED
|
@@ -235,21 +235,17 @@ def check_user_access(request: gr.Request) -> Tuple[str, bool]:
|
|
| 235 |
# OAuth 用户信息在 session['oauth_info'] 中
|
| 236 |
if 'oauth_info' in session:
|
| 237 |
oauth_info = session.get('oauth_info', {})
|
| 238 |
-
#
|
| 239 |
-
|
| 240 |
-
logger.info(f"oauth_info 的所有键: {list(oauth_info.keys()) if isinstance(oauth_info, dict) else 'Not a dict'}")
|
| 241 |
|
| 242 |
# 尝试多个可能的用户名字段
|
| 243 |
username = (
|
| 244 |
-
|
| 245 |
-
|
| 246 |
-
|
| 247 |
-
oauth_info.get('username') or
|
| 248 |
-
oauth_info.get('login') or
|
| 249 |
-
oauth_info.get('email', '').split('@')[0] # 使用 email 的用户名部分
|
| 250 |
)
|
| 251 |
if username:
|
| 252 |
-
logger.info(f"从 session['oauth_info'] 获取用户名: {username}")
|
| 253 |
|
| 254 |
# 或者在 session['user'] 中
|
| 255 |
elif 'user' in session:
|
|
@@ -264,11 +260,6 @@ def check_user_access(request: gr.Request) -> Tuple[str, bool]:
|
|
| 264 |
logger.warning("无法获取用户名,请确保:")
|
| 265 |
logger.warning("1. 已在 Space Settings 中启用 OAuth (hf_oauth: true)")
|
| 266 |
logger.warning("2. 用户已通过 'Login with Hugging Face' 按钮登录")
|
| 267 |
-
if hasattr(request, 'request') and hasattr(request.request, 'session'):
|
| 268 |
-
session = request.request.session
|
| 269 |
-
logger.warning(f"Session keys: {list(session.keys())}")
|
| 270 |
-
if 'oauth_info' in session:
|
| 271 |
-
logger.warning(f"oauth_info: {session.get('oauth_info')}")
|
| 272 |
|
| 273 |
if not username:
|
| 274 |
return "", False
|
|
|
|
| 235 |
# OAuth 用户信息在 session['oauth_info'] 中
|
| 236 |
if 'oauth_info' in session:
|
| 237 |
oauth_info = session.get('oauth_info', {})
|
| 238 |
+
# 用户信息嵌套在 userinfo 字典中
|
| 239 |
+
userinfo = oauth_info.get('userinfo', {})
|
|
|
|
| 240 |
|
| 241 |
# 尝试多个可能的用户名字段
|
| 242 |
username = (
|
| 243 |
+
userinfo.get('preferred_username') or
|
| 244 |
+
userinfo.get('name') or
|
| 245 |
+
userinfo.get('sub')
|
|
|
|
|
|
|
|
|
|
| 246 |
)
|
| 247 |
if username:
|
| 248 |
+
logger.info(f"从 session['oauth_info']['userinfo'] 获取用户名: {username}")
|
| 249 |
|
| 250 |
# 或者在 session['user'] 中
|
| 251 |
elif 'user' in session:
|
|
|
|
| 260 |
logger.warning("无法获取用户名,请确保:")
|
| 261 |
logger.warning("1. 已在 Space Settings 中启用 OAuth (hf_oauth: true)")
|
| 262 |
logger.warning("2. 用户已通过 'Login with Hugging Face' 按钮登录")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 263 |
|
| 264 |
if not username:
|
| 265 |
return "", False
|