But: Lier un compte Instagram Business via Facebook Login, ingérer profil + médias, stocker dans MySQL et exposer une API REST. (Sans cron / webhook pour l'instant.)
- Node.js + TypeScript
- Express (routing léger)
- Prisma (ORM) + MySQL
- Axios (HTTP Graph API)
- Zod (validation)
- Pino (logs JSON)
public_profile,pages_show_list,pages_read_engagement,instagram_basic,business_management
| Méthode | Route | Description |
|---|---|---|
| GET | /health | Ping |
| GET | /auth/facebook/start | Génère URL d'auth Facebook |
| GET | /auth/facebook/callback | Échange code -> tokens + ingestion |
| GET | /accounts | Liste comptes IG |
| GET | /accounts/:igUserId/profile | Profil stocké |
| GET | /accounts/:igUserId/media?limit=20&before=... | Médias paginés |
| POST | /accounts/:igUserId/sync | Force re-sync (incrementale) |
- Échange
code-> short-lived token (OAuth endpoint). - Échange short -> long-lived token.
/me/accountscollecte pages avecinstagram_business_account.- Pour chaque compte IG: profil + médias (batch initial).
- Upsert profil & médias (ignorer doublons via
igMediaId). - Réponse JSON => comptes créés/actualisés & nombre de médias ingérés.
- Chiffrés (AES-256-GCM) avant insertion.
npm install
npx prisma migrate dev --name init
npm run devLes champs encryptedPageToken et encryptedUserToken sont passés en TEXT pour éviter toute coupure entraînant des erreurs de déchiffrement si la clé change. Lancer une migration puis relier les comptes si nécessaire.