Poiché un utente di sistema rappresenta le chiamate al server, non dispone di Facebook Login e non può installare un'app o seguire il flusso oAuth di Facebook standard per generare un token. Devi eseguire queste operazioni tramite chiamate API.
| Tipi | Token d'accesso senza scadenza | Token d'accesso con scadenza suggeriti |
|---|---|---|
Durata | Non scade mai | Valido per 60 giorni |
Aggiornamento necessario? | No | Sì |
Consiglio basato sui casi d'uso | Puoi tollerare il rischio che i token d'accesso vengano divulgati e vuoi che le tue applicazioni di terzi abbiano accesso offline ai dati. | Vuoi limitare il rischio che i token d'accesso vengano divulgati. |
Un utente di sistema o un utente di sistema con funzioni avanzate deve installare l'app che verrà usata per generare un token d'accesso. Ciò significa consentire all'app di effettuare chiamate alle API per conto di questo utente di sistema o utente di sistema con funzioni avanzate.
L'utente di sistema e l'app devono appartenere allo stesso Business Manager. È possibile installare solo app almeno con livello di accesso Standard all'API Ads Management.
Ecco di cosa hai bisogno per installare un'app per un utente di sistema:
access_token: di un utente amministratore, un utente di sistema con funzioni avanzate o un altro utente di sistemabusiness_app: l'ID dell'app da installarePer installare un'app per l'utente di sistema, effettua una richiesta POST:
curl \ -F "business_app=APP-ID" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/applications"
Se l'installazione avviene correttamente, la chiamata restituisce un risultato booleano. Se una qualsiasi delle limitazioni non viene soddisfatta, visualizzerai un messaggio di errore appropriato.
Dopo che l'utente di sistema ha installato l'app, può generare un token d'accesso permanente. Sono previste alcune restrizioni:
Ecco i parametri per la chiamata API:
business_app: l'app di proprietà del Business Manager a cui appartiene l'utente di sistema.appsecret_proof: campo calcolato per l'app. Questo parametro è necessario per assicurare che sia il server corretto a effettuare la chiamata API. Per maggiori dettagli, consulta Protezione degli accessi.scope: stringa separata da virgole contenente le autorizzazioni estese.access_token: token che appartiene all'amministratore, all'utente di sistema con funzioni avanzate o all'utente di sistema standard di Business Manager.set_token_expires_in_60_days: impostato su true per generare un token d'accesso dell'utente di sistema con scadenza. Consigliato. I token con scadenza sono una best practice per la sicurezza. Alcune aziende devono usare token con scadenza. Se questo requisito si applica alla tua azienda, l'omissione di questo parametro o la sua impostazione su false comporta un errore. Tutte le integrazioni dovrebbero adottare token con scadenza per allinearsi con l'evoluzione degli standard di sicurezza della piattaforma.Ambiti supportati per gli utenti di sistema:
ads_managementads_readattribution_readbusiness_managementcatalog_managementcommerce_account_manage_orderscommerce_account_read_orderscommerce_account_read_settingsinstagram_basicinstagram_branded_content_ads_brandinstagram_branded_content_brandinstagram_content_publishinstagram_manage_commentsinstagram_manage_insightsinstagram_manage_messagesinstagram_shopping_tag_productsleads_retrievalpage_eventspages_manage_adspages_manage_ctapages_manage_engagementpages_manage_instant_articlespages_manage_metadatapages_manage_postspages_messagingpages_read_engagementpages_read_user_contentpages_show_listprivate_computation_accesspublish_videoread_audience_network_insightsread_insightsread_page_mailboxeswhatsapp_business_managementwhatsapp_business_messagingAutorizzazione obsoleta, visibile soltanto per le app create prima del 24 aprile 2018
publish_actions
Autorizzazioni limitate per funzionalità
| Funzionalità | Autorizzazione |
|---|---|
business_creative_asset_management |
|
commerce_public_api_beta_testing |
|
Per generare una appsecret_proof, puoi usare il codice PHP:
$appsecret_proof = hash_hmac( 'sha256', $access_token_used_in_the_call, $app_secret_for_the_app_used_in_the_call, );
Nell'esempio di codice qui sopra, app_secret_for_the_app_used_in_the_call fa riferimento alla chiave segreta per l'app usata per la generazione del token d'accesso. La chiave segreta è disponibile nella Dashboard gestione app.
appsecret_proof in formato hash deve essere una stringa come "1734d0d1e1ca62c9762c10bbc7321fdf89ecc7d819312b2f3".
Per generare un token d'accesso permanente dell'utente di sistema, effettua una richiesta POST:
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
Per generare un token d'accesso dell'utente di sistema, effettua una richiesta POST:
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "set_token_expires_in_60_days=true" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
In precedenza l'endpoint era denominato /APP-SCOPED-SYSTEM-USER-ID/ads_access_token. Le chiamate a quel nome non funzionano più.
La risposta restituisce la stringa del token d'accesso. Se una qualsiasi delle limitazioni non viene soddisfatta, vengono restituiti i codici di errore appropriati. Risposta:
{
"access_token": "CAAB3rQQzTFABANaYYCmOuLhbC]Fu8cAnmkcvT0ZBIDNm1d1fSp4Eg4XA79gmYumZCoSuiMSUILUjzG3y15BJlrYwXdqwd5c7y3lOUzu6aT7MkXL6HpISksSuLP4aFKWPmwb6iOgGeugRSn766xMZCN72vTiGGLUNqC2MKRL"
}Puoi anche generare un token d'accesso dell'utente di sistema usando l'interfaccia utente di Business Manager.
Un token dell'utente di sistema con scadenza è valido per 60 giorni dal momento in cui viene generato o aggiornato. Per creare continuità, lo sviluppatore deve aggiornare il token d'accesso entro 60 giorni. Se non viene aggiornato, il token d'accesso non è più valido e lo sviluppatore deve generarne uno nuovo per riottenere l'accesso all'API.
Per aggiornare un token d'accesso dell'utente di sistema con scadenza, hai bisogno di:
fb_exchange_token: un token d'accesso dell'utente di sistema validoclient_id: ID dell'appclient_secret: chiave segretaset_token_expires_in_60_days: impostato su true per aggiornare un token d'accesso dell'utente di sistema con scadenzaInterroga l'endpoint GET oauth/access_token.
Esempio di richiesta
curl -i -X GET
"https://graph.facebook.com/{graph-api-version}/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
set_token_expires_in_60_days=true&
fb_exchange_token={your-access-token}"Esempio di risposta
{
"access_token":"{expiring-system-user-access-token}",
"token_type": "bearer",
"expires_in": 5183944 // Time left in seconds until the token expires
}Per proteggere il sistema, questo endpoint esegue regolarmente la rotazione dei token o la revoca dei token d'accesso per gli utenti del sistema compromessi.
Per revocare un token d'accesso dell'utente di sistema, hai bisogno di:
revoke_token: il token d'accesso da revocare
client_id: ID dell'app
client_secret: chiave segreta
access_token: token d'accesso per identificare il chiamante
I requisiti sono i seguenti:
Il client_id deve corrispondere all'app reale e devi assicurarti che l'app non sia in throttling, disabilitata o eliminata.
Il client_id insieme all'app installata di revoke_token, all'app installata di access_token e al client_secret devono essere tutti uguali.
Interroga l'endpoint GET oauth/revoke.
Esempio di richiesta
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/revoke?
client_id={app-id}&
client_secret={app-secret}&
revoke_token={system-user-access-token-to-revoke}&
access_token={your-access-token}"Esempio di risposta
{
"success":"true",
}La rotazione dei token è una misura di sicurezza che può consentire di ridurre i rischi, ad esempio limitando i danni provocati da token divulgati. Modificando regolarmente i token di accesso, è possibile limitare il potenziale danno causato da un token divulgato o smarrito, in modo molto simile alla modifica delle password. Attualmente, il nostro sistema supporta la rotazione dell'utente di sistema senza tempi di inattività. Per farlo, segui queste istruzioni:
Aggiorna il token d'accesso dell'utente di sistema tramite l'API Refresh, che restituirà un nuovo token d'accesso dell'utente di sistema valido per 60 giorni dalla data di aggiornamento. Il token d'accesso precedente continuerà a funzionare fino alla scadenza (data di creazione + 60).
Distribuisci il nuovo token d'accesso dell'utente di sistema.
Revoca il token d'accesso dell'utente di sistema precedente tramite l'API Revocation. L'invalidazione avviene immediatamente e il token non può essere più utilizzato dopo la revoca.