因為系統用戶代表伺服器呼叫,所以並未經過 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,將產生有期限的系統用戶存取權杖。選用項目。以下為支援的系統用戶範圍:
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 |
|
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,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", }
權杖輪換是一種安全措施,可以幫助減輕風險,例如,限制權杖洩露的損害。透過定期變更存取權杖,可以限制權杖洩露或放錯地方造成的潛在損害,就像變更密碼一樣。目前,我們的系統支援不停機的系統用戶輪換。若要這麼做,請依下列指示操作:
透過 SUAT 重新整理 API 重新整理系統用戶存取權杖。SUAT 重新整理 API 將傳回一個新的系統用戶存取權杖,新權杖自重新整理之日起的 60 天內有效。舊權杖在到期(建立日期加上 60 天)之前仍可使用。
部署新的系統用戶存取權杖。
透過 SUAT 撤銷 API 撤銷舊系統用戶存取權杖。權杖將立即失效,且權杖在撤銷後不能再次使用。