30 lines
1.2 KiB
Markdown
30 lines
1.2 KiB
Markdown
# Étape 15 — correctif boucle OAuth / quota YouTube
|
|
|
|
Le nouveau log montre la vraie cause :
|
|
|
|
`reason=quotaExceeded`
|
|
|
|
La boucle venait de l'interaction entre deux morceaux du code :
|
|
|
|
1. `_loadSubscriptions()` appelait `getAccessToken()`.
|
|
2. Sur Android, `getAccessToken()` réécrivait systématiquement `session.value`.
|
|
3. Le listener `_onSessionChanged()` voyait cette écriture.
|
|
4. Il rappelait immédiatement `_loadSubscriptions()`.
|
|
5. La boucle recommençait et envoyait des centaines de requêtes à
|
|
YouTube Data API jusqu'à épuiser le quota du projet.
|
|
|
|
Correctif :
|
|
|
|
- `getAccessToken()` ne notifie plus `session.value` si le token est inchangé ;
|
|
- `_onSessionChanged()` ne relance jamais les abonnements si une requête
|
|
est déjà en cours ;
|
|
- `_loadSubscriptions()` possède maintenant un verrou anti-réentrance ;
|
|
- une connexion initiale continue de charger automatiquement les abonnements.
|
|
|
|
Important :
|
|
le quota actuellement épuisé est un quota du projet YouTube Data API,
|
|
pas un bannissement du compte Google/YouTube.
|
|
|
|
Après remplacement des fichiers, redémarre l'application. Le flot de
|
|
centaines de lignes `[YT-ACCOUNT][API-ERROR]` doit disparaître.
|