wu981526092 commited on
Commit
0a06f26
·
1 Parent(s): dbeb044

Fix HF user info parsing and OAuth scope issues

Browse files

- Add detailed logging for HF API user info response
- Improve username field detection with fallbacks
- Fix OAuth scope to use only supported 'read-repos'
- Handle multiple possible field names from HF API
- Better error handling for missing user data fields

Files changed (1) hide show
  1. backend/routers/auth.py +15 -4
backend/routers/auth.py CHANGED
@@ -91,7 +91,7 @@ async def login(request: Request):
91
  f"?client_id={oauth_config['client_id']}"
92
  f"&redirect_uri={redirect_uri}"
93
  f"&response_type=code"
94
- f"&scope={oauth_config['scopes']}"
95
  f"&state={state}"
96
  )
97
 
@@ -174,17 +174,28 @@ async def oauth_callback(request: Request, code: str, state: str):
174
  user_response.raise_for_status()
175
  user_info = user_response.json()
176
 
 
 
 
 
177
  except requests.RequestException as e:
178
  logger.error(f"User info fetch failed: {e}")
179
  raise HTTPException(status_code=400, detail="Failed to fetch user information")
180
 
181
  # Store user in session
 
 
 
 
 
 
 
182
  user_data = {
183
  "id": user_info.get("id"),
184
- "name": user_info.get("name"),
185
- "username": user_info.get("login"), # HF username
186
  "email": user_info.get("email"),
187
- "avatar_url": user_info.get("avatarUrl"),
188
  "access_token": access_token, # Store for future API calls if needed
189
  "auth_method": "oauth"
190
  }
 
91
  f"?client_id={oauth_config['client_id']}"
92
  f"&redirect_uri={redirect_uri}"
93
  f"&response_type=code"
94
+ f"&scope=read-repos" # Use only supported scope
95
  f"&state={state}"
96
  )
97
 
 
174
  user_response.raise_for_status()
175
  user_info = user_response.json()
176
 
177
+ # Debug: log user info structure
178
+ logger.info(f"🔍 HF User info received: {list(user_info.keys())}")
179
+ logger.info(f"📝 User details - id: {user_info.get('id')}, name: {user_info.get('name')}, login: {user_info.get('login')}")
180
+
181
  except requests.RequestException as e:
182
  logger.error(f"User info fetch failed: {e}")
183
  raise HTTPException(status_code=400, detail="Failed to fetch user information")
184
 
185
  # Store user in session
186
+ # Try multiple fields for username as HF API might use different field names
187
+ username = (user_info.get("login") or
188
+ user_info.get("username") or
189
+ user_info.get("name") or
190
+ user_info.get("id") or
191
+ "unknown_user")
192
+
193
  user_data = {
194
  "id": user_info.get("id"),
195
+ "name": user_info.get("name") or user_info.get("fullName") or username,
196
+ "username": username,
197
  "email": user_info.get("email"),
198
+ "avatar_url": user_info.get("avatarUrl") or user_info.get("avatar"),
199
  "access_token": access_token, # Store for future API calls if needed
200
  "auth_method": "oauth"
201
  }