安裝應用程式及產生、重新整理和撤銷憑證

因為系統用戶代表的是伺服器呼叫,所以沒有 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 呼叫期間的存取憑證擁有者必須屬於同一個企業管理平台。
  • 應用程式不一定要屬於同一個企業管理平台。如果不是,就會設有一些限制條件。請參閱下方的部分

以下是 API 呼叫的參數:

  • business_app:系統用戶所屬企業管理平台擁有的應用程式。
  • appsecret_proof:該應用程式的計算欄位。此為必要項目,用於確保是正確的伺服器執行 API 呼叫。詳情請參閱登入安全
  • scope:包含延伸權限的逗號分隔字串。
  • access_token:屬於企業管理平台管理員、管理員系統用戶或一般系統用戶的憑證。
  • set_token_expires_in_60_days:設定為 true,以產生會過期的系統用戶存取憑證。選填項目。

系統用戶的支援範圍:

  • ads_management
  • ads_read
  • attribution_read
  • business_management
  • catalog_management
  • commerce_account_manage_orders
  • commerce_account_read_orders
  • commerce_account_read_settings
  • instagram_basic
  • instagram_branded_content_ads_brand
  • instagram_branded_content_brand
  • instagram_content_publish
  • instagram_manage_comments
  • instagram_manage_insights
  • instagram_manage_messages
  • instagram_shopping_tag_products
  • leads_retrieval
  • page_events
  • pages_manage_ads
  • pages_manage_cta
  • pages_manage_engagement
  • pages_manage_instant_articles
  • pages_manage_metadata
  • pages_manage_posts
  • pages_messaging
  • pages_read_engagement
  • pages_read_user_content
  • pages_show_list
  • private_computation_access
  • publish_video
  • read_audience_network_insights
  • read_insights
  • read_page_mailboxes
  • whatsapp_business_management
  • whatsapp_business_messaging

只有 2018 年 4 月 24 日之前建立的應用程式可檢視的已停用權限

publish_actions

按功能設限的權限

功能 權限

business_creative_asset_management

business_creative_managementbusiness_creative_insights
business_creative_insights_sharebusiness_data_management

commerce_public_api_beta_testing

commerce_manage_accountscommerce_account_read_reports

如要產生 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,manage_pages" \
-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,manage_pages" \
-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",
}

存取憑證輪替

憑證輪替是一項保護帳戶安全的措施,有助於降低風險,例如減輕憑證洩露造成的損失。定期更改存取憑證可以減輕憑證洩露或遺失招致的潛在損失,效果類似更改密碼。目前,我們的系統支援系統用戶輪替,並且不會出現停機時間。方法很簡單,只要按照下列指示操作即可:

  1. 透過 SUAT Refresh API 重新整理系統用戶存取憑證。SUAT Refresh API 將傳回新系統用戶存取憑證,並且新憑證自重新整理日期起計有效 60 天。舊的憑證在建立日期起計 60 天後過期,在此之前仍然有效。

  2. 部署新系統用戶存取憑證。

  3. 透過 SUAT Revocation API 撤銷舊的系統用戶存取憑證。憑證撤銷後,將即時失效且無法再供使用。