From 82ec4a3e549957b1bece93b43ec52b1032c61863 Mon Sep 17 00:00:00 2001 From: leon-morival Date: Tue, 4 Nov 2025 11:30:17 +0100 Subject: [PATCH] feat: youtube doc --- .gitignore | 1 - src/screens/Publishing/PublishYoutube.js | 2 +- youtube.md | 77 ++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 youtube.md diff --git a/.gitignore b/.gitignore index 28a397d..fcd3f6d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ npm-debug.* web-build/ ios/ android/ -youtube.md # macOS .DS_Store diff --git a/src/screens/Publishing/PublishYoutube.js b/src/screens/Publishing/PublishYoutube.js index 93a6a1e..d17617c 100644 --- a/src/screens/Publishing/PublishYoutube.js +++ b/src/screens/Publishing/PublishYoutube.js @@ -235,7 +235,7 @@ const PublishYoutube = () => { {hasYoutubePublication && youtubeUrl && ( diff --git a/youtube.md b/youtube.md new file mode 100644 index 0000000..18d65b3 --- /dev/null +++ b/youtube.md @@ -0,0 +1,77 @@ +# 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 : +2. Sélectionne le projet lié au compte YouTube. +3. Dans l’onglet « Identifiants », repère l’ID client OAuth 2.0 existant au format : + ``` + 123456789012-abcdefghijklmnopqrstu.apps.googleusercontent.com + ``` + Copie-le : c’est `YOUR_CLIENT_ID`. +4. S’il n’existe 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 l’ID 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=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 + ``` +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 + +```bash +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 + +1. Enregistre les secrets côté Firebase (adapter le projet via `-P` si besoin) : + ```bash + 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é : + ```bash + firebase functions:config:get + ``` +3. Redéploie la fonction : + ```bash + 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" +} +```