myYouTube/backend/app
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
..
api Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00
core Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
models Add delete-downloaded-video and real YouTube unsubscribe 2026-09-16 19:47:35 +00:00
services Fix OAuth token exchange failing on the widened scope 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
config.py Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
db.py Implement Phases 1-5: skeleton, OAuth, categories, video sync/feed, playback 2026-09-16 18:44:30 +00:00
main.py Implement Phase 6: MeTube download integration 2026-09-16 18:56:17 +00:00