OLYMPUS

Formations

Mini-formation · outil rs.pix-up.com

Clés API des réseaux sociaux

Pour publier sur Facebook, Instagram, TikTok, Pinterest et X, rs a besoin d'une app développeur par plateforme : un identifiant, un secret et une URL de rappel. Ce pas-à-pas détaille chaque écran, les valeurs exactes à coller et les erreurs qui font perdre une après-midi. L'outil « Clés API réseaux » de NEO reprend les mêmes étapes en liste à cocher.

4 plateformes31 étapes~2 h hors validations
rsMetaInstagramTikTokPinterestX.env
00

Le principe : une app par plateforme

ObjectifComprendre ce que l'on crée et pourquoi rs ne réutilise pas les jetons de n8n.

Chaque réseau délivre l'accès à un compte par OAuth : rs redirige vers le réseau, tu acceptes, le réseau renvoie vers l'URL de rappel de rs avec un code, que rs échange contre un jeton d'accès (chiffré en base, renouvelé seul). Pour cela, le réseau doit connaître rs : c'est l'app développeur, identifiée par un ID (public) et un secret (à garder pour soi).

Correct
EXPRESSION
Clés d'app dans le .env de rs → chaque compte se connecte en un clic, jetons renouvelés automatiquement.
Incorrect
EXPRESSION
Jeton utilisateur recopié dans un workflow (AFP-04) → expiré au bout de quelques semaines, publication cassée sans prévenir.
Public

App ID / Client key

Identifie l'app ; visible dans l'URL d'autorisation.

Secret

App secret

Ne jamais le committer ni le coller dans un ticket : uniquement dans les .env.

URL

Callback

Toujours de la forme https://rs.pix-up.com/api/v1/oauth/<réseau>/callback.

Les pages légales exigées partout

PageURL
Politique de confidentialitéhttps://rs.pix-up.com/confidentialite
Conditions d'utilisationhttps://rs.pix-up.com/conditions
Suppression des donnéeshttps://rs.pix-up.com/suppression-donnees
  1. Créer les 4 apps, coller les clés, connecter les comptes en mode test.

  2. Validations : App Review Meta, audit TikTok, accès Standard Pinterest.

  3. Publication publique ; ne rien toucher sauf secret régénéré.

Pour vérifier

Que renvoie le réseau à l'URL de rappel de rs ?

01

Meta

ObjectifCréer l'app développeur Meta de rs et en recopier les clés. Réseaux couverts : Facebook (Pages) + Instagram (compte professionnel).
ÉlémentValeur
Consolehttps://developers.facebook.com/apps
Durée20 à 30 min
CoûtGratuit.
URL de rappel (callback)https://rs.pix-up.com/api/v1/oauth/meta/callback
Autorisations demandéespages_show_list, pages_read_engagement, pages_manage_posts, business_management, instagram_basic, instagram_content_publish

Avant de commencer

  • Un compte Facebook personnel administrateur de la Page à publier.
  • Le compte Instagram passé en compte professionnel (Entreprise ou Créateur) et relié à la Page (Instagram → Paramètres → Compte professionnel → Page connectée, ou Meta Business Suite → Paramètres → Comptes Instagram).
  • De préférence un portefeuille business (business.facebook.com) qui possède la Page.
  • Les pages légales publiques de rs (confidentialité, conditions, suppression des données).

Pas à pas

1. Activer le compte développeur — Sur developers.facebook.com, Commencer puis valider le compte (téléphone ou carte demandés une seule fois). Utiliser le compte Facebook admin de la Page.

2. Créer l'app — Mes apps → Créer une app. Nom : rs Pix-Up ; e-mail : celui de contact. Cas d'usage : Gérer tout sur votre Page puis ajouter Gérer les messages et le contenu sur Instagram (si l'assistant propose un type, choisir Entreprise). Relier l'app au portefeuille business qui possède la Page.

À coller
Nom de l'app : rs Pix-Up

3. Paramètres de base (identité + pages légales) — Paramètres de l'app → Général : renseigner les champs ci-dessous, une icône 1024×1024, la catégorie Entreprise et pages, puis Enregistrer les modifications.

À coller
Domaines de l'app : rs.pix-up.com
URL de la politique de confidentialité : https://rs.pix-up.com/confidentialite
URL des conditions de service : https://rs.pix-up.com/conditions
Suppression des données (URL des instructions) : https://rs.pix-up.com/suppression-donnees

4. Configurer la connexion (Facebook Login) — Produit Facebook Login (ou Facebook Login for Business) → Paramètres : Connexion OAuth cliente Oui, Connexion OAuth Web Oui, Forcer HTTPS Oui, et coller l'URI de redirection. Enregistrer.

À coller
URI de redirection OAuth valide : https://rs.pix-up.com/api/v1/oauth/meta/callback

5. Ajouter les autorisations — Dans les cas d'usage → Personnaliser : ajouter chaque autorisation de la liste. En mode Développement, elles fonctionnent tout de suite pour les personnes qui ont un rôle sur l'app (Admin, Développeur, Testeur) — c'est le cas de Julien, donc pas d'App Review nécessaire pour publier sur nos propres Pages.

À coller
Autorisations : pages_show_list,pages_read_engagement,pages_manage_posts,business_management,instagram_basic,instagram_content_publish

6. Seulement pour une app Entreprise : créer la configuration — Facebook Login for Business → Configurations → Créer : type Jeton d'accès utilisateur, cocher les autorisations ci-dessus, actifs Pages et Comptes Instagram. Copier l'ID de configuration → RS_META_CONFIG_ID. (App classique sans ce produit : laisser vide.)

7. Copier les clés — Paramètres de l'app → Général : ID de l'app → RS_META_APP_ID ; Clé secrète (bouton Afficher, mot de passe Facebook redemandé) → RS_META_APP_SECRET.

8. Connecter dans rs — Après report des clés sur le VPS : rs → Comptes → Facebook ou Instagram → Connecter. Cocher la Page et le compte Instagram dans la fenêtre Meta : rs crée un compte Facebook par Page et un compte Instagram par compte pro relié.

Clés à reporter

VariableOù la trouver
RS_META_APP_IDID de l'app (Paramètres de l'app → Général)
RS_META_APP_SECRETClé secrète de l'app (bouton Afficher)
RS_META_CONFIG_IDID de configuration Facebook Login for Business (app de type Entreprise uniquement) (facultatif)

Validation par Meta

Mode Développement = publication possible pour les comptes ayant un rôle sur l'app (suffisant pour nos Pages). Pour des clients externes : passer l'app en Live, vérification de l'entreprise (Kbis/avis SIRENE) et App Review des autorisations avec une vidéo de démonstration (compter 1 à 4 semaines).

« URL bloquée : la redirection a échoué »
CauseURI de redirection absente ou différente d'un caractère (http, / final).
SolutionColler exactement l'URL de rappel dans Facebook Login → Paramètres.
Aucun compte Instagram proposé
CauseCompte Instagram personnel ou non relié à la Page.
SolutionPasser en compte professionnel et le relier à la Page, puis reconnecter.
« Invalid Scopes » à la connexion
CauseApp Entreprise sans configuration (Facebook Login for Business n'accepte pas la liste brute).
SolutionCréer la configuration et renseigner RS_META_CONFIG_ID.
Jeton expiré après 60 jours
CauseJeton utilisateur copié à la main (cas du workflow n8n AFP-04).
SolutionPasser par rs : il échange le jeton contre un jeton de Page sans expiration.

Pour vérifier

Quel type d'app Meta faut-il créer pour publier sur une Page et un compte Instagram pro ?

Pourquoi ne pas recopier un jeton utilisateur dans n8n comme AFP-04 ?

02

TikTok

ObjectifCréer l'app développeur TikTok de rs et en recopier les clés. Réseaux couverts : TikTok (photos en carrousel et vidéos).
ÉlémentValeur
Consolehttps://developers.tiktok.com/apps
Durée30 min + validation du domaine
CoûtGratuit.
URL de rappel (callback)https://rs.pix-up.com/api/v1/oauth/tiktok/callback
Autorisations demandéesuser.info.basic, video.publish, video.upload

Avant de commencer

  • Un compte TikTok (celui qui publiera) — de préférence compte Business ou Créateur.
  • Accès à la zone DNS Cloudflare de pix-up.com (vérification du domaine rs.pix-up.com).
  • Les pages légales publiques de rs.

Pas à pas

1. Créer le compte développeur — developers.tiktok.com → Log in avec le compte TikTok, accepter les conditions développeur. Créer une organisation (Pix-Up) si proposé : l'app lui appartient, pas à une personne.

2. Créer l'app — Manage apps → Connect an app (ou Create app). Renseigner icône, nom, catégorie, description (« Outil interne Pix-Up de publication planifiée sur nos comptes »), plateforme Web, et les URL ci-dessous.

À coller
Nom de l'app : rs Pix-Up
Website URL : https://rs.pix-up.com
Terms of Service URL : https://rs.pix-up.com/conditions
Privacy Policy URL : https://rs.pix-up.com/confidentialite

3. Ajouter Login Kit + Content Posting API — Add products : Login Kit et Content Posting API. Dans Content Posting API, activer Direct Post (publication directe, pas seulement brouillon dans l'appli).

4. Cocher les scopes — Onglet Scopes : ajouter les trois scopes de la liste.

À coller
Scopes : user.info.basic,video.publish,video.upload

5. Déclarer l'URL de redirection — Login Kit → Redirect URI (Web) : coller l'URL de rappel exacte.

À coller
Redirect URI : https://rs.pix-up.com/api/v1/oauth/tiktok/callback

6. Vérifier le domaine des médias — TikTok télécharge photos et vidéos depuis rs (PULL_FROM_URL) : seul un domaine vérifié est accepté. Content Posting API → Verify domains / URL properties → Add rs.pix-up.com, choisir la vérification DNS et copier la valeur TXT proposée. Dans Cloudflare (zone pix-up.com) : DNS → Ajouter un enregistrement de type TXT, nom rs, contenu = la valeur TikTok. Revenir cliquer Verify.

À coller
Domaine à vérifier : rs.pix-up.com
Préfixe d'URL des médias : https://rs.pix-up.com/api/v1/public/media/

7. Sandbox : ajouter le compte de test — Onglet Sandbox → Create sandbox, puis Target users : ajouter le compte TikTok qui publiera. Tant que l'app n'est pas auditée, seuls ces comptes peuvent se connecter et les posts sont privés (SELF_ONLY).

8. Copier les clés — Onglet Credentials (en haut de la page de l'app) : Client key → RS_TIKTOK_CLIENT_KEY, Client secret → RS_TIKTOK_CLIENT_SECRET.

9. Demander l'audit (publication publique) — Submit for review : expliquer l'usage (publication de nos carrousels design), joindre une vidéo de démonstration de rs (connexion TikTok → composeur → publication). Après audit, passer RS_TIKTOK_DEFAULT_PRIVACY=PUBLIC_TO_EVERYONE.

Clés à reporter

VariableOù la trouver
RS_TIKTOK_CLIENT_KEYClient key (onglet Credentials de l'app)
RS_TIKTOK_CLIENT_SECRETClient secret
RS_TIKTOK_DEFAULT_PRIVACYSELF_ONLY tant que l'app n'est pas auditée (facultatif)

Validation par TikTok

Sans audit : publication privée uniquement (SELF_ONLY), comptes de la sandbox seulement, quota journalier réduit. L'audit du Content Posting API demande une vidéo de démo et prend en général 1 à 3 semaines.

« url_ownership_unverified »
CauseDomaine rs.pix-up.com non vérifié pour PULL_FROM_URL.
SolutionAjouter l'enregistrement TXT dans Cloudflare puis Verify.
« unaudited_client_can_only_post_to_private_accounts »
CauseApp non auditée et post demandé en public.
SolutionRester en SELF_ONLY (défaut de rs) jusqu'à l'audit.
« redirect_uri » invalide
CauseURL de redirection non déclarée dans Login Kit.
SolutionColler l'URL exacte, sans / final.
Le compte ne peut pas se connecter
CauseCompte absent des Target users de la sandbox.
SolutionL'ajouter dans Sandbox → Target users.

Pour vérifier

Tant que l'app TikTok n'est pas auditée, les vidéos publiées sont…

Que faut-il vérifier pour que TikTok aille chercher les médias sur rs ?

03

Pinterest

ObjectifCréer l'app développeur Pinterest de rs et en recopier les clés. Réseaux couverts : Pinterest (Pins image, multi-images, vidéo).
ÉlémentValeur
Consolehttps://developers.pinterest.com/apps/
Durée15 min + accès Standard
CoûtGratuit.
URL de rappel (callback)https://rs.pix-up.com/api/v1/oauth/pinterest/callback
Autorisations demandéesboards:read, boards:write, pins:read, pins:write, user_accounts:read

Avant de commencer

  • Un compte Pinterest professionnel (Business) — conversion gratuite dans les paramètres du compte.
  • Au moins un tableau sur le compte.
  • Les pages légales publiques de rs.

Pas à pas

1. Créer l'app — developers.pinterest.com → My apps → Connect app avec le compte Business. Remplir nom, description, site web et usage (« publication planifiée de nos contenus »), accepter les conditions.

À coller
Nom de l'app : rs Pix-Up
Site web : https://rs.pix-up.com
Politique de confidentialité : https://rs.pix-up.com/confidentialite

2. Déclarer l'URI de redirection — Page de l'app → Configure → Redirect URIs → Add : coller l'URL de rappel, puis Save.

À coller
Redirect URI : https://rs.pix-up.com/api/v1/oauth/pinterest/callback

3. Copier les clés — App ID → RS_PINTEREST_APP_ID ; App secret key (bouton Show) → RS_PINTEREST_APP_SECRET.

4. Accès Trial : mode sandbox de rs — Une app neuve a l'accès Trial : les Pins vont dans la sandbox (invisibles du public). Console → Generate token en environnement Sandbox (droits pins:write, boards:write) → RS_PINTEREST_SANDBOX_TOKEN dans le .env rs du VPS, puis recréer rs-api, rs-worker et rs-scheduler. Tableaux, Pins et médias passent alors par api-sandbox avec ce jeton ; l'OAuth et le profil restent en production. Les jetons sont propres à leur environnement (prod ≠ sandbox → 401 croisé).

À coller
Variable : RS_PINTEREST_SANDBOX_TOKEN

5. Connecter le compte dans rs (OAuth) — rs → Comptes (/accounts) → carte Pinterest → bouton en haut à droite de la carte : Connecter (ou Reconnecter si un compte existe déjà). Pinterest affiche l'écran de consentement avec les droits demandés → Autoriser → retour sur /api/v1/oauth/pinterest/callback puis /accounts, compte listé. Bouton grisé = clés RS_PINTEREST_APP_ID/SECRET non lues par l'API. Choisir ensuite le tableau par défaut du compte : c'est lui qui reçoit les Pins.

6. Préparer la vidéo de démo — Une seule prise d'écran de 2 à 4 min, sans coupure entre l'OAuth et la publication, navigateur plein écran barre d'adresse visible (Pinterest vérifie le domaine), sous-titres ou voix en anglais. Avant : vérifier la Redirect URI exacte dans la console, supprimer les tableaux démo en double en sandbox, et supprimer le compte déjà connecté (poubelle de sa ligne) pour que le bouton redevienne « Connecter » et que la vidéo montre une vraie première connexion. La liste des tableaux sandbox peut rester vide ~20 s : recharger juste avant la prise.

7. Tourner la vidéo — 1. Ouvrir rs.pix-up.com et se connecter (« rs: Pix'Up tool to schedule and publish our own content to our Pinterest Business account »). 2. /accounts → Pinterest → Connecter → montrer l'écran de consentement et ses droits (boards:read/write, pins:read/write, user_accounts:read) → Autoriser → compte listé. 3. Montrer les tableaux synchronisés et le tableau par défaut. 4. Nouveau post : image (2:3), titre, description, lien → cocher le compte Pinterest → Publier maintenant. 5. Montrer le statut Publié et l'identifiant du Pin renvoyé (en sandbox le Pin n'apparaît pas sur pinterest.com : c'est accepté). 6. Option : déconnexion du compte, pages /confidentialite et /suppression-donnees.

8. Demander l'accès Standard — Mettre la vidéo en ligne (YouTube non répertorié ou Drive) → page de l'app → Upgrade access → joindre le lien. Cas d'usage : « Publish our own brand content (Pix'Up) to our Business account; no third-party user data. »

À coller
Cas d'usage : Publish our own brand content (Pix'Up) to our Business account; no third-party user data.

9. Après l'accès Standard — Retirer RS_PINTEREST_SANDBOX_TOKEN (et RS_PINTEREST_API_BASE s'il pointe sur la sandbox) du .env du VPS, recréer rs-api, rs-worker et rs-scheduler, refaire l'OAuth depuis /accounts (bouton Reconnecter) puis resynchroniser les tableaux.

Clés à reporter

VariableOù la trouver
RS_PINTEREST_APP_IDApp ID
RS_PINTEREST_APP_SECRETApp secret key (bouton Show)
RS_PINTEREST_API_BASELaisser vide (production) ; la sandbox passe par RS_PINTEREST_SANDBOX_TOKEN (facultatif)
RS_PINTEREST_SANDBOX_TOKENJeton Sandbox (pins:write, boards:write) tant que l'accès est « Trial » — à retirer après l'accès Standard (facultatif)

Validation par Pinterest

Trial = sandbox uniquement (Pins non publics). Standard = production, après revue avec vidéo (quelques jours à 2 semaines).

401 « Authentication failed »
CauseJeton Trial utilisé sur l'API de production (ou l'inverse).
SolutionTrial : jeton Sandbox dans RS_PINTEREST_SANDBOX_TOKEN ; Standard : le retirer, puis reconnecter.
Publication refusée, compte connecté
CauseJeton en lecture seule (sans pins:write).
SolutionReconnecter le compte par OAuth depuis Comptes.
« Pinterest : choisissez un tableau »
CauseAucun tableau par défaut ni choisi dans le post.
SolutionComptes → tableau par défaut (bouton Actualiser si la liste est vide).
Pin créé mais introuvable
CauseAccès Trial : il est dans la sandbox.
SolutionNormal tant que l'accès Standard n'est pas accordé.

Pour vérifier

En accès « Trial », où partent les épingles ?

04

X (Twitter)

ObjectifCréer l'app développeur X (Twitter) de rs et en recopier les clés. Réseaux couverts : X (texte, jusqu'à 4 images ou 1 vidéo).
ÉlémentValeur
Consolehttps://developer.x.com/en/portal/dashboard
Durée15 min
CoûtGratuit pour un faible volume, payant au-delà (voir la page Billing du portail).
URL de rappel (callback)https://rs.pix-up.com/api/v1/oauth/x/callback
Autorisations demandéestweet.read, tweet.write, users.read, media.write, offline.access

Avant de commencer

  • Le compte X qui publiera (connecté dans le navigateur).
  • Un moyen de paiement si le quota gratuit ne suffit pas (l'API X est payante au-delà).

Pas à pas

1. Ouvrir le portail développeur — developer.x.com → Developer Portal → s'inscrire (décrire l'usage en quelques phrases : publication des contenus de Pix-Up sur notre compte). Un Project et une App sont créés.

2. Choisir l'offre — Vérifier sur Products / Billing l'offre en cours : le niveau gratuit permet un petit nombre de posts par mois, les niveaux payants (Basic, Pro ou paiement à l'usage) augmentent le quota. Les tarifs changent souvent : se fier à la page du portail le jour de l'inscription.

3. Paramétrer l'authentification utilisateur — App → Settings → User authentication settings → Set up : App permissions Read and write, Type of App Web App, Automated App or Bot (client confidentiel), puis les URL ci-dessous. Save.

À coller
Callback URI / Redirect URL : https://rs.pix-up.com/api/v1/oauth/x/callback
Website URL : https://rs.pix-up.com
Terms of service : https://rs.pix-up.com/conditions
Privacy policy : https://rs.pix-up.com/confidentialite

4. Copier les clés OAuth 2.0 — À la sauvegarde, X affiche une seule fois le Client ID → RS_X_CLIENT_ID et le Client Secret → RS_X_CLIENT_SECRET. Perdu ? Keys and tokens → OAuth 2.0 Client ID and Client Secret → Regenerate. Ne pas confondre avec API Key / Secret (OAuth 1.0a) ni Bearer Token : rs ne les utilise pas.

5. Connecter dans rs — rs → Comptes → X → Connecter : autoriser l'app sur x.com. Le jeton (2 h) est renouvelé automatiquement grâce au scope offline.access.

Clés à reporter

VariableOù la trouver
RS_X_CLIENT_IDOAuth 2.0 Client ID
RS_X_CLIENT_SECRETOAuth 2.0 Client Secret (affiché une seule fois)

Validation par X (Twitter)

Pas de revue : l'app est utilisable dès sa création, dans la limite du quota de l'offre.

403 « You are not permitted to perform this action »
CausePermissions de l'app restées en Read ou quota de l'offre épuisé.
SolutionPasser en Read and write, reconnecter le compte, vérifier le quota.
« Something went wrong » sur x.com
CauseCallback URI différente de celle déclarée.
SolutionColler l'URL exacte dans User authentication settings.
401 à l'échange du code
CauseClient Secret mal copié ou régénéré depuis.
SolutionRegenerate puis mettre à jour le .env.

Pour vérifier

Quel réglage oublié empêche de tweeter (403) ?

Le Client Secret OAuth 2.0 de X…

05

Brancher les clés dans rs

ObjectifMettre les clés au bon endroit, sans les exposer.

1. Noter les clés dans le .env global — Fichier OLYMPUS/.env, section # --- rs --- : coller chaque valeur après le =. Ce fichier est la source unique des secrets (jamais commité).

2. Reporter sur le VPS et redémarrer rs — Demander à Claude « reporte les clés rs sur le VPS » : il copie les valeurs dans ~/apps/rs.pix-up.com/apps/rs/api/.env puis relance rs-api, rs-scheduler et rs-worker. L'onglet Comptes de rs affiche alors Connecter au lieu de « clés absentes ».

Bloc .env (valeurs à compléter)
# --- rs ---
RS_META_APP_ID=
RS_META_APP_SECRET=
RS_META_CONFIG_ID=
RS_TIKTOK_CLIENT_KEY=
RS_TIKTOK_CLIENT_SECRET=
RS_TIKTOK_DEFAULT_PRIVACY=
RS_PINTEREST_APP_ID=
RS_PINTEREST_APP_SECRET=
RS_PINTEREST_API_BASE=
RS_PINTEREST_SANDBOX_TOKEN=
RS_X_CLIENT_ID=
RS_X_CLIENT_SECRET=
  • Les secrets ne vont que dans le .env global d'OLYMPUS et le .env de rs sur le VPS : jamais dans git, un ticket, une capture ou un message.
  • Un secret régénéré dans une console invalide l'ancien : mettre à jour le .env du VPS puis redémarrer rs-api, rs-worker et rs-scheduler.
  • Après connexion, rs → Comptes affiche l'expiration de chaque jeton : un compte en rouge se reconnecte d'un clic.
Source : consoles développeur Meta, TikTok, Pinterest et X telles que relevées en novembre 2026 ; les libellés d'écran peuvent bouger.
Neo