Je API-sleutels van de platforms ophalen
Gevorderd Laatst bijgewerkt 9 aug 2026
Op deze pagina
- Facebook en Instagram (Meta)
- Voordat je begint
- 1. Koppel Instagram aan de Facebook Page
- 2. Maak de Meta-app aan
- 3. Voeg de Facebook-permissies toe
- 4. Voeg Instagram toe aan dezelfde app
- 5. Genereer het token en maak verbinding
- Als er iets misgaat
- YouTube
- 1. Project en API
- 2. Consent screen
- 3. OAuth-client
- 4. Verbinden
- De drie valkuilen bij Google
- Storage (Cloudflare R2)
- Buffer (TikTok en X)
- AI-captions (Anthropic)
- Beveiliging, kort
Phoenix Clips publiceert vanuit je eigen accounts via je eigen API-credentials — er gaat niets via de servers van Phoenix, en Phoenix ziet je tokens nooit. De prijs daarvan is een eenmalige wandeling door drie developer-consoles. Deze pagina is die wandeling.
Waar de waarden terechtkomen, hangt af van waar je instantie draait:
- Lokale installatie: het tabblad Settings → This install in het paneel — elke sectie hieronder noemt de precieze velden. De credentials landen in de credential store van Windows, versleuteld onder je eigen account.
- Eigen cloud-instantie: dezelfde namen, maar als omgevingsvariabelen op je host
(
FB_APP_ID,YT_CLIENT_ID, …).
Behandel elk token als een wachtwoord. Access tokens, refresh tokens, app secrets en client secrets geven volledige toegang tot je accounts. Belandt er één op een screenshot, in een openbare chat, in git of in een supportticket — beschouw hem dan als gelekt en geef een nieuwe uit.
Facebook en Instagram (Meta)
Eén (gratis) Meta-app dekt beide platforms. De keten ziet er zo uit: je Facebook-gebruiker → een Facebook Page → het Instagram professional account dat aan die Page gekoppeld is → je Meta-app → tokens → publiceren en statistieken.
Voordat je begint
- Je beheert een Facebook Page — een Page, niet alleen een persoonlijk profiel.
- Je Instagram-account staat op Professional (Business of Creator).
- Dat Instagram-account is gekoppeld aan de Facebook Page.
- Je meldt je bij Meta for Developers aan als de Facebook-gebruiker die die Page beheert.
1. Koppel Instagram aan de Facebook Page
Ingelogd zijn op instagram.com is niet de koppeling — de Page zelf moet het account kennen:
- Schakel op Facebook van je profiel over naar de Page.
- Open Settings & privacy → Settings → Linked accounts (of het item Instagram).
- Connect account, meld je aan bij het juiste Instagram-account, bevestig.
Zegt OAuth later “You don’t have any Instagram accounts” — dan staat het account niet op Professional, of is de koppeling hierboven niet vanaf de Page gemaakt.
2. Maak de Meta-app aan
- Meta for Developers → My Apps → Create App.
- Een duidelijke naam naar keuze; controleer het contact-e-mailadres; Next.
- Kies bij Use cases voor Content management → Manage everything on your Page → Next.
- Bij Business is “I don’t want to connect a business portfolio yet” prima.
- Rond het af. Je App ID en App secret staan onder App settings → Basic — dat zijn de eerste twee velden in de sectie Facebook & Instagram van het paneel.
3. Voeg de Facebook-permissies toe
Use cases → Manage everything on your Page → Customize → Permissions and features. De service gebruikt precies deze:
| Permissie | Waarvoor Phoenix Clips hem nodig heeft |
|---|---|
pages_show_list | de Page vinden en haar token uitgeven |
pages_read_engagement | de eigen posts van de Page lezen |
pages_manage_posts | de clip publiceren |
read_insights | weergaven en bereik |
pages_manage_engagement | statistieken van Reels, en de eerste reactie plaatsen namens de Page |
Staat Meta in de huidige flow op business_management — voeg hem dan toe; sla over wat het
verder alleen maar aanbiedt.
4. Voeg Instagram toe aan dezelfde app
- Voeg de use case Manage messaging & content on Instagram toe.
- Kies in Instagram API voor API setup with Facebook login — niet “with Instagram login”, dat is een andere flow met andere tokens.
- Zet onder Manage content on Instagram → Go to permissions and features aan:
| Permissie | Waarvoor |
|---|---|
instagram_basic | het professional account zien |
instagram_content_publishing | Reels publiceren (oudere documentatie noemt het instagram_content_publish — neem wat je dashboard laat zien) |
instagram_manage_insights | plays en bereik |
instagram_manage_comments | de automatische eerste reactie |
instagram_manage_contents | een Reel verwijderen wanneer je de clip terugtrekt — zonder hem is een gepubliceerde Reel hiervandaan nooit meer weg te halen, en kan de clip nooit opnieuw gepubliceerd worden |
5. Genereer het token en maak verbinding
- Zet App ID en App secret eerst in het paneel: Settings → This install → Facebook & Instagram, opslaan.
- Open Tools → Graph API Explorer, kies
je app en houd de host op
graph.facebook.com(overschakelen naar.instagram.comis een andere API, geen “Instagram-token”). - Voeg de permissies uit beide tabellen toe en druk op Generate Access Token. Geef in het OAuth-venster toegang tot de juiste Page en het bijbehorende Instagram-account — alleen die twee selecteren is genoeg.
- Kopieer het token naar Settings → Connections → Facebook & Instagram en druk op Connect.
Het paneel wisselt dat kortlevende token server-side in voor een gebruikerstoken van 60 dagen en een permanent Page-token; niets kortlevends wordt bewaard. Het tabblad Connections toont beide vervaldatums, en op datzelfde scherm staat elke permissie die het token bleek te missen.
Als er iets misgaat
| Symptoom | Wat te controleren |
|---|---|
| You don’t have any Instagram accounts | Staat Instagram op Professional? Gekoppeld aan de Page zelf, niet alleen via Accounts Center? OAuth gedaan als de gebruiker die de Page beheert? |
| Invalid Scopes op een permissie | Die moet eerst aan staan in Use cases → Permissions and features, en pas daarna worden aangevraagd in de Explorer. |
| Instagram zichtbaar in de browser maar niet in OAuth | Een browsersessie is geen Page-koppeling — doe stap 1 opnieuw. |
YouTube
Twee manieren om te verbinden, hetzelfde resultaat — video’s landen hoe dan ook op je eigen kanaal:
- Authorize with Google — één klik in het paneel, niets in te richten. In afwachting van Google’s beoordeling van onze gedeelde app; de knop in Settings → Connections licht op zodra die goedgekeurd is.
- Je eigen OAuth-client — de route hieronder. ~20 minuten in Google Cloud, en je installatie praat rechtstreeks met YouTube, volledig los van Phoenix. Werkt vandaag al, en blijft voor altijd ondersteund.
Uploads gaan rechtstreeks naar je kanaal via je eigen (gratis) OAuth-client van Google Cloud. De keten: Google-account → Cloud-project → OAuth-client → refresh token → YouTube Data API.
1. Project en API
- Open Google Cloud Console en maak een project aan (naam naar keuze).
- APIs & Services → Library → zet YouTube Data API v3 aan. Meer is niet nodig — weergaven en likes worden via dezelfde API gelezen.
2. Consent screen
APIs & Services → OAuth consent screen:
- App name, support email, developer email — die van jou.
- Audience: External.
- Zolang de app de status Testing heeft, voeg je je eigen Google-account toe onder Test users.
Je hoeft hier geen scopes met de hand uit te kiezen; het paneel vraagt er bij het verbinden
precies drie — youtube.upload om een video te plaatsen, youtube.readonly voor het kanaal en
de weergavecijfers, en youtube.force-ssl om een video weer offline te halen (het recht om te
uploaden geeft op zichzelf geen recht om te verwijderen).
3. OAuth-client
- APIs & Services → Credentials → Create credentials → OAuth client ID.
- Application type: Web application.
- Voeg onder Authorized redirect URIs letterlijk de redirect-URI toe die het paneel toont in
Settings → Connections → YouTube — voor een lokale installatie is dat
http://127.0.0.1:8787/api/youtube/callback. - Create — kopieer de Client ID en het Client secret naar Settings → This install → YouTube, opslaan.
4. Verbinden
Settings → Connections → YouTube → Connect via Google. Meld je aan met het account dat het kanaal bezit en sta beide scopes toe. De service bewaart alleen het refresh token.
Google waarschuwt dat de app niet geverifieerd is — dat hoort zo, het is jouw app; Advanced → doorgaan is de weg erlangs.
De drie valkuilen bij Google
- In de modus Testing verlopen tokens na 7 dagen. Zolang het consent screen op Testing staat, sterft het refresh token wekelijks en verbind je opnieuw. Zet de app op In production (pagina Audience → Publish app) — verificatie is daar niet voor nodig, alleen om het waarschuwingsscherm kwijt te raken.
- De waarschuwing “private tot geverifieerd” bijt hier niet. In Google’s documentatie staat dat niet-geverifieerde projecten op private-locked uploaden, maar die beperking richt zich op apps die naar de kanalen van anderen uploaden. Met je eigen project en je eigen kanaal — exact deze opzet — komen uploads eruit met de zichtbaarheid die je gekozen hebt.
- De quota is goed voor ruwweg zes uploads per dag. Eén upload kost 1600 van de standaard 10 000 dagelijkse eenheden. Ruim voldoende voor een clips-pijplijn; batch-imports komen uit hetzelfde budget.
Storage (Cloudflare R2)
Elke S3-compatibele bucket werkt; R2 is het gedocumenteerde pad (het gratis tarief dekt een clipsbibliotheek). Vanuit de bucket downloaden Instagram, TikTok en X je video — YouTube en Facebook publiceren prima zonder.
- Open in het dashboard van Cloudflare R2 en maak een bucket
aan — het paneel verwacht
phoenix-clips-media, tenzij je het veld Bucket name aanpast. - Geef hem een publiek domein: bucket → Settings → Public access → Custom domains (of om
te beginnen het subdomein
r2.dev). Dit is Public URL of the bucket — bestanden moeten zonder inloggen bereikbaar zijn. - Maak credentials aan: R2 → Manage API tokens → Create API token, permissie Object Read & Write, beperkt tot deze bucket. Het resultaat is de Access key id en de Secret access key — het secret wordt één keer getoond.
- De Account id staat in de zijbalk van R2; het S3 endpoint is
https://<account-id>.r2.cloudflarestorage.com.
Zes waarden in totaal — allemaal op Settings → This install → Storage.
Buffer (TikTok en X)
TikTok en X lopen via je eigen Buffer-account: hun directe API’s eisen app audits en betaalde abonnementen die voor een indie nergens op slaan. Phoenix stuurt de API van Buffer aan; Buffer houdt de logins van de platforms bij.
Het gratis plan is genoeg. Het gratis tarief van Buffer staat 3 gekoppelde kanalen toe — TikTok en X zijn er daar twee van, dus houd je er één over. Twee van de limieten zijn het weten waard, omdat het paneel ze bij naam noemt zodra ze toeslaan:
- 10 ingeplande posts per kanaal tegelijk. Meteen publiceren raakt dit niet; alleen een wachtrij die tot tien wachtende posts is gegroeid. Ze komen weer vrij naarmate posts uitgaan.
- 3000 API-verzoeken per maand. Comfortabel — de service ververst metrieken op een timer in plaats van te blijven pollen, en juist daarom zijn het interval van de metrieken en dat van de Buffer-poll instellingen en niet iets wat de service zelf beslist.
Betaalde plannen (vanaf $5/maand per kanaal) halen de plannings-limiet weg en voegen Buffers eigen analytics toe. Niets in Phoenix Clips heeft ze nodig.
- Koppel de TikTok- en X-accounts als kanalen binnen Buffer zelf.
- Maak een access token aan in de developer/API-instellingen van je Buffer-account en kopieer hem, samen met je organization id, naar Settings → This install → Buffer.
- Het tabblad Connections in het paneel koppelt elk platform daarna automatisch aan het bijbehorende Buffer-kanaal — de override-map bestaat alleen voor het zeldzame account met duplicaten.
AI-captions (Anthropic)
Optioneel. De knop Generate schrijft titels, captions en hashtags met Claude op basis van je eigen key, door Anthropic per gebruik gefactureerd — captions voor een clip kosten fracties van een cent.
- Meld je aan op console.anthropic.com, open API keys en maak er een aan.
- Plak hem in Settings → This install → AI captions. Toon, taal, basis-hashtags en de naam van de game staan ernaast.
Zonder key zegt de knop Generate dat hij niet geconfigureerd is; de rest maalt er niet om.
Beveiliging, kort
- Secrets horen niet thuis in git, op screenshots, in logs of in supporttickets.
- Het paneel maskeert opgeslagen secrets — het toont Set, nooit de waarde. Wat toch lekt, kun je intrekken en opnieuw uitgeven in de console waar het vandaan komt; het paneel neemt de vervanger in hetzelfde veld aan.
- Geef alleen de scopes uit die op deze pagina staan. Niets hier heeft permissies nodig voor berichten, reactiemoderatie of advertenties.