3.2 KiB
3.2 KiB
Publication YouTube – guide refresh token
1. Récupérer un code d'autorisation
1.1 Trouver ou créer le Client ID
- Ouvre la console Google Cloud : https://console.cloud.google.com/apis/credentials
- Sélectionne le projet lié au compte YouTube.
- Dans l’onglet « Identifiants », repère l’ID client OAuth 2.0 existant au format :
Copie-le : c’est
123456789012-abcdefghijklmnopqrstu.apps.googleusercontent.comYOUR_CLIENT_ID. - S’il n’existe pas encore, clique sur « Créer des identifiants » → « ID client OAuth » → type « Application Web » et ajoute
http://localhost:8081dans les URIs de redirection autorisées. Enregistre, puis note l’ID client et le secret.
1.2 Générer un code d'autorisation
- Ouvre cette URL dans un navigateur (mets à jour
redirect_urisi besoin) :https://accounts.google.com/o/oauth2/v2/auth?client_id=YOUR_CLIENT_ID.apps.googleusercontent.com&redirect_uri=http://localhost:8081&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload&access_type=offline&prompt=consent - Connecte-toi au compte YouTube cible et accepte les permissions.
- Google te redirige vers
http://localhost:8081/?code=.... Copie la valeur du paramètrecode.
2. Échanger le code contre un refresh token
curl -X POST https://oauth2.googleapis.com/token \
-d client_id=YOUR_CLIENT_ID.apps.googleusercontent.com \
-d client_secret=YOUR_CLIENT_SECRET \
-d code="CODE_RECU" \
-d grant_type=authorization_code \
-d redirect_uri=http://localhost:8081
La réponse JSON contient :
access_token(jeton court terme),refresh_token(à conserver),expires_in,scope,token_type.
⚠️ Le refresh_token n’est renvoyé qu’une seule fois avec access_type=offline. Garde-le de manière sécurisée.
3. Mettre à jour les variables d'environnement Firebase
- Enregistre les secrets côté Firebase (adapter le projet via
-Psi besoin) :firebase functions:config:set \ YOUTUBE_CLIENT_ID="YOUR_CLIENT_ID.apps.googleusercontent.com" \ YOUTUBE_CLIENT_SECRET="YOUR_CLIENT_SECRET" \ YOUTUBE_REFRESH_TOKEN="YOUR_REFRESH_TOKEN" YOUTUBE_REDIRECT_URI="http://localhost:8081" \ YOUTUBE_PRIVACY_STATUS="public" \ YOUTUBE_CATEGORY_ID="10" # 10 = Catégorie youtube de musique - Vérifie ce qui est stocké :
firebase functions:config:get - Redéploie la fonction :
firebase deploy --only functions:youtube
4. Exemple de réponse OAuth
http://localhost:8081/?code=4/0Ab32j90LMDeJDShWSk1OkXwgbjrHS-qQpyYTlXhH9q3nlV0EJa6cTL-7nI9yOKHoz6rgRA&scope=https://www.googleapis.com/auth/youtube.upload
{
"access_token": "ya29.a0ATi6K2uR4DhnmTDl0EN2tvDogwwEwl8SDJLpUzvnZ8LGgOYjgmhqg7MoMM0_iTJR_NBEDPe2LlJDqCFFnIi9s3qRv_zfw_NeTnN-LwUmAyVJkdqSP6GvzQCuZkE6OBuTvaU5b2obk5rHvDOkWXxAb7xjbVTzIBIg8O5VVhJ-VB8VEbTVsSq9bc0ljkbcyBEzm4JdQRwaCgYKAcgSAQ8SFQHGX2MiR1Owf2aiiEBUsU-LDUDgWg0206",
"expires_in": 3599,
"refresh_token": "1//03sy-LDVmCMcFCgYIARAAGAMSNwF-L9IrHwwdBBZvg3Hwun9hxHUx_AsJaa1qeozmtvGtdOXKIRIyKjTp7S_b0igvzM_1A5bLH34",
"scope": "https://www.googleapis.com/auth/youtube.upload",
"token_type": "Bearer"
}