앱 설치, 토큰 생성, 새로 고침 및 취소

시스템 사용자는 서버 호출을 나타내므로 Facebook 로그인이 없으며, 앱을 설치하거나 표준 Facebook oAuth 플로를 통해 토큰을 생성할 수 없습니다. 앱을 설치하거나 토큰을 생성하려면 API 호출을 사용해야 합니다.

시스템 액세스 토큰의 유형

유형 만료되지 않는 액세스 토큰 추천된 만료되는 액세스 토큰

평생

만료되지 않음

60일간 유효

새로 고침 필요 여부

아니요

사용 사례를 기반으로 한 추천

유출된 액세스 토큰의 위험을 감수할 수 있으며 타사 앱이 오프라인에서 데이터에 액세스하기를 원합니다.

유출된 액세스 토큰의 위험을 제한하고 싶습니다.

앱 설치

시스템 사용자 또는 운영자 시스템 사용자는 액세스 토큰 생성에 사용될 앱을 설치해야 합니다. 즉 앱이 이 시스템 사용자 또는 운영자 시스템 사용자 대신 API를 호출할 수 있도록 허용해야 합니다.

시스템 사용자와 앱은 모두 같은 비즈니스 관리자에 속해야 하며, 광고 관리 API 표준 액세스 이상의 권한이 있는 앱만 설치할 수 있습니다.

시스템 사용자를 위해 앱을 설치하려면 다음 항목이 필요합니다.

  • access_token: 운영자 사용자, 운영자 시스템 사용자 또는 다른 시스템 사용자의 access_token
  • business_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를 호출할 때 사용된 액세스 토큰의 소유자는 같은 비즈니스 관리자에 속해야 합니다.
  • 앱은 같은 비즈니스 관리자의 소유일 수도 있고 그렇지 않을 수도 있습니다. 비즈니스 관리자의 소유가 아닌 경우 몇 가지 제한 사항이 있습니다. 아래 섹션을 확인하세요.

다음은 API 호출의 매개변수입니다.

  • business_app: 시스템 사용자가 속한 비즈니스 관리자가 소유하는 앱.
  • appsecret_proof: 앱에 대해 계산된 필드. 이는 적절한 서버에서 API 호출을 보내도록 하는 데 필요합니다. 자세한 내용은 로그인 보안을 참조하세요.
  • scope: 확장 권한이 포함되었으며 쉼표로 구분된 문자열.
  • access_token: 비즈니스 관리자 운영자, 운영자 시스템 사용자 또는 일반 시스템 사용자에 속한 토큰.
  • set_token_expires_in_60_days: true로 설정하여 만료되는 시스템 사용자 액세스 토큰을 생성합니다. 선택 사항.

시스템 사용자의 경우 다음과 같은 범위가 지원됩니다.

  • ads_management
  • ads_read
  • business_management
  • catalog_management
  • instagram_basic
  • instagram_content_publish
  • instagram_manage_comments
  • instagram_manage_insights
  • instagram_manage_messages
  • leads_retrieval
  • manage_notifications
  • pages_manage_cta
  • pages_read_engagement
  • pages_manage_ads
  • pages_manage_engagement
  • pages_manage_posts
  • pages_messaging
  • pages_show_list
  • pages_read_user_content
  • pages_manage_metadata
  • page_events
  • publish_video
  • read_audience_network_insights
  • read_insights
  • read_page_mailboxes
  • rsvp_event
  • whatsapp_business_management
  • whatsapp_business_messaging

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: 앱 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: 앱 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 시스템에서는 가동 중지 시간 없이 시스템 사용자 순환을 지원합니다. 이렇게 하려면 다음 단계를 따르세요.

  1. SUAT 새로 고침 API를 통해 시스템 사용자 액세스 토큰을 새로 고침합니다. SUAT 새로 고침 API는 새로운 시스템 사용자 액세스 토큰을 반환하고 새로운 토큰은 새로 고침된 날짜로부터 60일 동안 유효합니다. 이전 토큰은 만료될 때까지 사용할 수 있습니다(생성 날짜 + 60).

  2. 새로운 시스템 사용자 액세스 토큰을 배포합니다.

  3. SUAT 취소 API를 통해 기존 시스템 사용자 액세스 토큰을 취소합니다.. 무효화는 즉시 적용되며, 취소 후에는 해당 토큰을 다시 사용할 수 없습니다.