시스템 사용자는 서버 호출을 나타내므로 Facebook 로그인이 없으며, 앱을 설치하거나 표준 Facebook oAuth 플로를 통해 토큰을 생성할 수 없습니다. 앱을 설치하거나 토큰을 생성하려면 API 호출을 사용해야 합니다.
유형 | 만료되지 않는 액세스 토큰 | 추천된 만료되는 액세스 토큰 |
---|---|---|
평생 | 만료되지 않음 | 60일간 유효 |
새로 고침 필요 여부 | 아니요 | 예 |
사용 사례를 기반으로 한 추천 | 유출된 액세스 토큰의 위험을 감수할 수 있으며 타사 앱이 오프라인에서 데이터에 액세스하기를 원합니다. | 유출된 액세스 토큰의 위험을 제한하고 싶습니다. |
시스템 사용자 또는 운영자 시스템 사용자는 액세스 토큰 생성에 사용될 앱을 설치해야 합니다. 즉 앱이 이 시스템 사용자 또는 운영자 시스템 사용자 대신 API를 호출할 수 있도록 허용해야 합니다.
시스템 사용자와 앱은 모두 같은 비즈니스 관리자에 속해야 하며, 광고 관리 API 표준 액세스 이상의 권한이 있는 앱만 설치할 수 있습니다.
시스템 사용자를 위해 앱을 설치하려면 다음 항목이 필요합니다.
access_token
: 운영자 사용자, 운영자 시스템 사용자 또는 다른 시스템 사용자의 access_tokenbusiness_app
: 설치되는 앱의 ID시스템 사용자를 위해 앱을 설치하려면 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" }
비즈니스 관리자 UI를 사용하여 시스템 사용자 액세스 토큰을 생성할 수도 있습니다.
만료되는 시스템 사용자 토큰은 생성 또는 새로 고침된 날짜부터 60일간 유효합니다. 연속성을 만들기 위해서는 개발자가 60일 이내에 액세스 토큰을 새로 고침해야 합니다. 그러지 않으면 액세스 토큰이 회수되고 개발자가 새로운 액세스 토큰을 받아야 API 액세스 권한이 복구됩니다.
기존 시스템 사용자 액세스 토큰을 새로 고침하려면 다음이 필요합니다.
fb_exchange_token
: 유효한 시스템 사용자 액세스 토큰client_id
: 앱 IDclient_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
: 앱 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", }
토큰 순환은 토큰 유출의 피해를 제한하는 것과 같이 위험을 완화하는 데 도움이 될 수 있는 보안 조치입니다. 액세스 토큰을 정기적으로 변경하여 유출되거나 잘못 할당된 토큰으로 인한 잠재적 피해를 제한할 수 있으며, 이는 비밀번호를 변경하는 것과 같습니다. 현재 Meta 시스템에서는 가동 중지 시간 없이 시스템 사용자 순환을 지원합니다. 이렇게 하려면 다음 단계를 따르세요.
SUAT 새로 고침 API를 통해 시스템 사용자 액세스 토큰을 새로 고침합니다. SUAT 새로 고침 API는 새로운 시스템 사용자 액세스 토큰을 반환하고 새로운 토큰은 새로 고침된 날짜로부터 60일 동안 유효합니다. 이전 토큰은 만료될 때까지 사용할 수 있습니다(생성 날짜 + 60).
새로운 시스템 사용자 액세스 토큰을 배포합니다.
SUAT 취소 API를 통해 기존 시스템 사용자 액세스 토큰을 취소합니다.. 무효화는 즉시 적용되며, 취소 후에는 해당 토큰을 다시 사용할 수 없습니다.