testcoder-ui commited on
Commit
acecd04
·
1 Parent(s): 6d30548

Fix OAuth username extraction: access userinfo nested dict

Browse files
Files changed (1) hide show
  1. app.py +6 -15
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
- # 打印 oauth_info 的内容用于调试
239
- logger.info(f"oauth_info 内容: {oauth_info}")
240
- logger.info(f"oauth_info 的所有键: {list(oauth_info.keys()) if isinstance(oauth_info, dict) else 'Not a dict'}")
241
 
242
  # 尝试多个可能的用户名字段
243
  username = (
244
- oauth_info.get('preferred_username') or
245
- oauth_info.get('name') or
246
- oauth_info.get('sub') or
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