myYouTube/backend/app/services
vrubelroman 8ddea8762d Fix OAuth token exchange failing on the widened scope
Google echoes back a token response scope string that's a superset/
reordering of what was requested (asking for "youtube" got back
"youtube.readonly youtube ..." too, since the broader scope implies the
narrower one) -- oauthlib does a strict string comparison and raised
"Warning: Scope has changed" on every reconnect attempt after the scope
was widened for the unsubscribe feature, even though Google's consent
screen had already granted access.

OAUTHLIB_RELAX_TOKEN_SCOPE=1 disables that check, matching what Google's
own behavior actually requires for any multi-scope request.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 19:52:23 +00:00
..
__init__.py Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
download_jobs.py Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00
google_oauth.py Fix OAuth token exchange failing on the widened scope 2026-09-16 19:52:23 +00:00
metube_client.py Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00
scheduler.py Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
state.py Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
sync.py Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00
video_presentation.py Implement Phase 6: MeTube download integration 2026-09-16 18:56:17 +00:00
youtube_client.py Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00