因為系統用戶代表的是伺服器呼叫,所以沒有 Facebook 登入,也無法安裝應用程式或透過標準 Facebook OAuth 流程來產生憑證。您必須使用 API 呼叫產生憑證。
| 類型 | 不過期的存取憑證 | 會過期的存取憑證(建議使用) |
|---|---|---|
生效時長 | 永不過期 | 有效期為 60 天 |
是否需要重新整理? | 否 | 是 |
基於用例的推薦 | 您能接受存取憑證洩露的風險,並且希望您的第三方應用程式可離線存取資料。 | 您想降低存取憑證洩露的風險。 |
系統用戶或管理員系統用戶必須安裝用來產生存取憑證的應用程式。這表示允許應用程式代表此系統用戶或管理員系統用戶呼叫 API。
系統用戶和應用程式均應屬於同一企業管理平台。您只能安裝擁有廣告管理 API 一般存取權限與更高級別權限的應用程式。
如要為系統用戶安裝應用程式,您需要:
access_token:管理員用戶、管理員系統用戶或另一系統用戶的存取憑證business_app:正在安裝的應用程式之編號如要為系統用戶安裝應用程式,請發出 POST 要求:
curl \ -F "business_app=APP-ID" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/applications"
如果安裝成功,此呼叫會傳回布林值結果。如未達到其中任何限制,您會看到對應的錯誤訊息。
系統用戶安裝應用程式後,就能產生長效存取憑證。須受一些限制約束:
以下是 API 呼叫的參數:
business_app:系統用戶所屬企業管理平台擁有的應用程式。appsecret_proof:該應用程式的計算欄位。此為必要項目,用於確保是正確的伺服器執行 API 呼叫。詳情請參閱登入安全。scope:包含延伸權限的逗號分隔字串。access_token:屬於企業管理平台管理員、管理員系統用戶或一般系統用戶的憑證。set_token_expires_in_60_days:設定為 true,以產生會過期的系統用戶存取憑證。(推薦做法)。會過期的憑證是安全最佳操作實例。部分商家必須使用會過期的憑證。如果此要求適用於您的企業,省略此參數或將其設為 false 將導致錯誤。所有整合工具都應採用會過期的憑證,以便與不斷變化的平台安全標準保持一致。系統用戶的支援範圍:
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_messaging只有 2018 年 4 月 24 日之前建立的應用程式可檢視的已停用權限
publish_actions
按功能設限的權限
| 功能 | 權限 |
|---|---|
business_creative_asset_management |
|
commerce_public_api_beta_testing |
|
如要產生 appsecret_proof,您可以使用 PHP 程式碼:
$appsecret_proof = hash_hmac( 'sha256', $access_token_used_in_the_call, $app_secret_for_the_app_used_in_the_call, );
在以上代碼範例中,app_secret_for_the_app_used_in_the_call 指的是用於產生存取憑證的應用程式之應用程式密鑰。您可以在應用程式管理中心找出應用程式密鑰。
經過雜湊處理的 appsecret_proof 應該是一個字串,例如 "1734d0d1e1ca62c9762c10bbc7321fdf89ecc7d819312b2f3"。
如要產生永久系統用戶存取憑證,請發出 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"
如要產生會過期的系統用戶存取憑證,請發出 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"
此端點之前名為 /SYSTEM-USER-ID/ads_access_token。對此名稱的呼叫不再有效。
此回應會傳回存取憑證字串。如未達到其中任何限制,系統就會擲回對應的錯誤代碼。回應:
{
"access_token": "CAAB3rQQzTFABANaYYCmOuLhbC]Fu8cAnmkcvT0ZBIDNm1d1fSp4Eg4XA79gmYumZCoSuiMSUILUjzG3y15BJlrYwXdqwd5c7y3lOUzu6aT7MkXL6HpISksSuLP4aFKWPmwb6iOgGeugRSn766xMZCN72vTiGGLUNqC2MKRL"
}您亦可以使用企業管理平台用戶介面產生系統用戶存取憑證。
會過期的系統用戶憑證由產生或重新整理日期起計生效 60 天。為了保證使用體驗不被打斷,開發人員應在 60 天內重新整理存取憑證,否則便會失去此存取憑證,屆時開發人員將需要獲取新的存取憑證,才能重新獲得 API 的存取權。
如要重新整理會過期的系統用戶存取憑證,您需要:
fb_exchange_token:有效的系統用戶存取憑證client_id:應用程式編號client_secret:應用程式密鑰set_token_expires_in_60_days:設定為 true,以重新整理會過期的系統用戶存取憑證。向 GET oauth/access_token 端點查詢。
要求範例
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}"回應範例
{
"access_token":"{expiring-system-user-access-token}",
"token_type": "bearer",
"expires_in": 5183944 // Time left in seconds until the token expires
}此端點旨在為遭到入侵的系統用戶執行常規憑證輪替或撤銷存取憑證,以此保護您的系統。
如要撤銷會過期的系統用戶存取憑證,您需要:
revoke_token:要撤銷的存取憑證
client_id:應用程式編號
client_secret:應用程式密鑰
access_token:識別呼叫者的存取憑證
具體要求如下所示:
client_id 必須與實際應用程式相對應,並且可以確保此應用程式未被限速、停用或刪除。
client_id、revoke_token 的已安裝應用程式、access_token 的已安裝應用程式和 client_secret 必須相同。
向 GET oauth/revoke 端點查詢。
要求範例
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}"回應範例
{
"success":"true",
}憑證輪替是一項保護帳戶安全的措施,有助於降低風險,例如減輕憑證洩露造成的損失。定期更改存取憑證可以減輕憑證洩露或遺失招致的潛在損失,效果類似更改密碼。目前,我們的系統支援系統用戶輪替,並且不會出現停機時間。若要執行此動作,請按照下列指示操作:
透過 Refresh API 重新整理系統用戶存取憑證後,系統將傳回新的系統用戶存取憑證,此憑證自重新整理日期起計有效 60 天。舊的存取憑證在建立日期起計 60 天後過期,在此之前仍然有效。
部署新的系統用戶存取憑證。
透過 Revocation API 撤銷舊的系統用戶存取憑證。憑證撤銷後,將即時失效且無法再供使用。