기본 사용자 액세스 토큰과 페이지 액세스 토큰은 단기적으로 실행되어 몇 시간 이내에 만료되지만, 단기 실행 토큰을 장기 실행 토큰으로 교환할 수 있습니다.
iOS, Android 또는 JavaScript SDK를 사용하는 경우, 사용자가 최근 90일 이내에 앱을 사용했다면 SDK에서 토큰을 자동으로 새로 고침합니다. Facebook SDK를 사용하는 네이티브 모바일 앱은 약 60일간 유효한 장기 실행 사용자 액세스 토큰을 얻게 됩니다. 앱 사용자가 Facebook 서버에 요청을 보내면 해당 토큰이 하루에 한 번 갱신됩니다. 요청이 없는 경우 토큰은 약 60일 후에 만료되며, 사용자는 새 토큰을 얻기 위해 다시 로그인 플로를 거쳐야 합니다.
최신 그래프 API 버전: v21.0
장기 실행 사용자 액세스 토큰이 필요하면 단기 실행 사용자 액세스 토큰에서 생성할 수 있습니다. 일반적으로 장기 실행 토큰은 약 60일간 지속됩니다.
다음 항목을 준비해야 합니다.
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}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
장기 실행 사용자 액세스 토큰을 생성하기 위한 워크플로는 다음과 같습니다.
장기 실행 액세스 토큰을 검색한 경우 서버에서 사용하거나 클라이언트에서 사용하도록 다시 보낼 수 있습니다.
만료된 토큰으로 장기 실행 토큰을 요청할 수 없습니다. 토큰이 만료되었다면 새로운 단기 실행 액세스 토큰을 생성하도록 앱에서 다시 사용자를 로그인 플로로 안내해야 합니다.
이 호출은 클라이언트가 아닌 서버에서 보내야 합니다. 이 API 호출에는 앱 시크릿 코드가 포함되므로 클라이언트 측 요청을 보내지 않아야 합니다. 대신 요청을 보내는 서버 측 코드를 구현한 다음 장기 실행 토큰이 포함된 응답을 클라이언트 측 코드에 전달합니다. 이는 원래 토큰과 다른 문자열이므로, 이러한 토큰을 저장하려는 경우 이전 토큰을 대체하세요.
두 개 이상의 웹 클라이언트(즉, 사용자가 두 개 이상의 컴퓨터에서 로그인)에서 동일한 장기 실행 토큰을 사용하지 않아야 합니다. 대신 서버에서 장기 실행 토큰을 사용하여 코드를 생성한 다음 이 코드를 사용하여 클라이언트에서 장기 실행 토큰을 가져와야 합니다. 서버 측 장기 실행 토큰에서 장기 실행 토큰을 생성하기 위한 정보는 아래를 참조하세요.
장기 실행 페이지 액세스 토큰이 필요하면 장기 실행 사용자 액세스 토큰에서 생성할 수 있습니다. 장기 실행 페이지 액세스 토큰은 만료 날짜가 없고 특정 상황에서만 만료되거나 무효화됩니다.
다음 항목을 준비해야 합니다.
GET {app-scoped-user-id}?accounts
엔드포인트를 쿼리합니다.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook에는 Facebook의 자동 스팸 시스템이 트리거되지 않도록 앱에 사용할 장기 실행 액세스 토큰을 가져오는 옵션이 있습니다. 다음과 같은 앱이 해당합니다.
다음은 클라이언트로부터 장기 실행 토큰을 얻는 대략적인 방법입니다.
GET oauth/client_code
엔드포인트를 쿼리합니다. 리디렉션 URI는 Facebook 로그인 > 설정 클라이언트 > OAuth 설정 카드의 앱 대시보드에서 설정한 정확한 값이어야 합니다.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Facebook의 서버에서 코드를 검색한 경우 보안 채널을 통해 클라이언트에 보내야 합니다. 이 작업을 완료한 후에는 클라이언트에서 /oauth/access_token
엔드포인트로 요청을 보내야 합니다.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
machine_id
는 클라이언트를 식별 및 추적하는 선택적 매개변수이고 보안 및 스팸 차단에 사용합니다. 사용자가 아닌 클라이언트 기준값입니다. 이전에 코드를 얻기 위해 호출을 보냈고 machine_id
가 제공된 경우 코드 요청에 포함해야 합니다.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
장기 실행 토큰을 생성하기 위한 워크플로는 다음과 같습니다.