Files
musicland/youtube.md
T
2025-11-04 14:10:43 +01:00

3.2 KiB
Raw Blame History

Publication YouTube guide refresh token

1. Récupérer un code d'autorisation

1.1 Trouver ou créer le Client ID

  1. Ouvre la console Google Cloud : https://console.cloud.google.com/apis/credentials
  2. Sélectionne le projet lié au compte YouTube.
  3. Dans longlet « Identifiants », repère lID client OAuth 2.0 existant au format :
    123456789012-abcdefghijklmnopqrstu.apps.googleusercontent.com
    
    Copie-le : cest YOUR_CLIENT_ID.
  4. Sil nexiste pas encore, clique sur « Créer des identifiants » → « ID client OAuth » → type « Application Web » et ajoute http://localhost:8081 dans les URIs de redirection autorisées. Enregistre, puis note lID client et le secret.

1.2 Générer un code d'autorisation

  1. Ouvre cette URL dans un navigateur (mets à jour redirect_uri si besoin) :
    https://accounts.google.com/o/oauth2/v2/auth?client_id=305598753437-3mn43cs1phacao2f1ctg1dbur7rct0bt.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
    
  2. Connecte-toi au compte YouTube cible et accepte les permissions.
  3. Google te redirige vers http://localhost:8081/?code=.... Copie la valeur du paramètre code.

2. Échanger le code contre un refresh token

curl -X POST https://oauth2.googleapis.com/token \
  -d client_id=YOUR_CLIENT_ID \
  -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 nest renvoyé quune seule fois avec access_type=offline. Garde-le de manière sécurisée.

3. Mettre à jour les variables d'environnement Firebase

  1. Enregistre les secrets côté Firebase (adapter le projet via -P si 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
    
  2. Vérifie ce qui est stocké :
    firebase functions:config:get
    
  3. 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"
}