[facebook] 페이스 북 : 영구 페이지 액세스 토큰?

나는 페이스 북 페이지를 데이터 소스 중 하나로 가진 프로젝트를 진행합니다. GUI를 사용하지 않고 주기적으로 일부 데이터를 가져옵니다. 그런 다음 웹 앱을 사용하여 이미 보유한 데이터를 표시합니다.

모든 정보가 공개 된 것은 아닙니다. 즉, 데이터에 한 번 액세스 한 다음 유지해야합니다. 그러나 프로세스를 모르고 아직 좋은 자습서를 찾지 못했습니다. 내가 필요하다고 생각합니다. access_token단계별로 사용자로부터 어떻게 얻을 수 있습니까? 사용자가 페이스 북 페이지의 관리자 인 경우 페이지에 FB 앱을 추가해야합니까?

편집 : 팁 주셔서 감사합니다 @ phwd. offline_access더 이상 존재하지 않아도 영구적 인 페이지 액세스 토큰을 얻는 방법에 대한 자습서를 만들었습니다 .

편집 : 방금 여기에 답이 있음을 알았습니다 : 서버가 FB 페이지 정보를 가져 오기 위해 오래 지속되는 FB 액세스 토큰



답변

Facebook의 확장 페이지 토큰 설명서 에 나와있는 지침에 따라 만료되지 않는 페이지 액세스 토큰을 얻을 수있었습니다.

달리 언급 된 경우를 제외하고 이러한 모든 단계 에서 그래프 API 탐색기 를 사용하는 것이 좋습니다 .

0. Facebook 앱 만들기

이미 앱이있는 경우 1 단계로 건너 뜁니다.

  1. 내 앱으로 이동하십시오 .
  2. “+ 새 앱 추가”를 클릭하십시오.
  3. 웹 사이트 앱을 설정하십시오.

권한이나 다른 것을 변경할 필요가 없습니다. 액세스 토큰을 사용하기 전에 사라지지 않는 앱만 있으면됩니다.

1. 사용자 단기 액세스 토큰 받기

  1. 그래프 API 탐색기로 이동하십시오 .
  2. 액세스 토큰을 받으려는 응용 프로그램을 선택하십시오 ( “내 응용 프로그램”메뉴가 아닌 “응용 프로그램”드롭 다운 메뉴에서).
  3. “Get Token”> “Get User Access Token”을 클릭하십시오.
  4. 팝업의 “확장 권한”탭에서 “manage_pages”를 확인하십시오.
  5. “액세스 토큰 가져 오기”를 클릭하십시오.
  6. 대상 페이지를 관리 할 수있는 Facebook 계정에서 액세스 권한을 부여하십시오. 이 사용자가 액세스 권한을 잃으면 최종 만료되지 않는 액세스 토큰은 작동을 멈출 수 있습니다.

“액세스 토큰”필드에 나타나는 토큰은 단기 액세스 토큰입니다.

2. 수명이 긴 액세스 토큰 생성

Facebook 문서의 지침에 따라 GET 요청

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = {app_secret} & fb_exchange_token = {short_lived_token}

앱의 ID와 비밀 및 이전 단계에서 생성 된 단기 토큰을 입력합니다.

당신은 그래프 API Explorer를 사용할 수 없습니다 . 어떤 이유로 든이 요청에 붙어 있습니다. 응답이 JSON이 아니라 쿼리 문자열이기 때문이라고 생각합니다. GET 요청이므로 브라우저에서 URL로 이동하면됩니다.

응답은 다음과 같아야합니다.

{ “access_token”: ” ABC123 “, “token_type”: “bearer”, “expires_in”: 5183791}

“ABC123″은 오래 지속되는 액세스 토큰입니다. 이를 액세스 토큰 디버거 에 넣어 확인할 수 있습니다. “만료”아래에 “2 개월”과 같은 것이 있어야합니다.

3. 사용자 아이디 받기

장기 액세스 토큰을 사용하여 GET 요청을

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

id필드는 계정 ID입니다. 다음 단계를 위해 필요합니다.

4. 영구 페이지 액세스 토큰 받기

에 GET 요청

https://graph.facebook.com/v2.10/ {account_id} / accounts? access_token = {long_lived_access_token}

JSON 응답 data에는 사용자가 액세스 할 수있는 항목 배열 이있는 필드 가 있어야합니다 . 영구 액세스 토큰을 원하는 페이지의 항목을 찾으십시오. 이 access_token필드에는 영구 액세스 토큰이 있어야합니다. 이를 복사하여 액세스 토큰 디버거 에서 테스트하십시오 . “만료”아래에 “Never”라고 표시되어야합니다.


답변

다음은 Graph API ExplorerAccess Token Debugger 만 사용하는 솔루션입니다 .

  1. 그래프 API 탐색기 :
    • 오른쪽 상단 드롭 다운 메뉴에서 앱을 선택하십시오.
    • 드롭 다운 (액세스 토큰 필드 오른쪽)에서 “사용자 액세스 토큰 가져 오기”를 선택하고 필요한 권한을 선택하십시오.
    • 사용자 액세스 토큰 복사
  2. 액세스 토큰 디버거 :
    • 복사 한 토큰을 붙여넣고 “디버그”를 누릅니다.
    • “액세스 토큰 확장”을 누르고 생성 된 오래 지속 된 사용자 액세스 토큰을 복사하십시오.
  3. 그래프 API 탐색기 :
    • 복사 된 토큰을 “액세스 토큰”필드에 붙여 넣기
    • “PAGE_ID? fields = access_token”으로 GET 요청을하십시오.
    • 응답에서 영구 페이지 액세스 토큰을 찾으십시오 (노드 “access_token”)
  4. (선택 사항) 액세스 토큰 디버거 :
    • 영구 토큰을 붙여넣고 “디버그”를 누르십시오
    • “만료”는 “사용 안함”이어야합니다.

(API 버전 2.9-2.11, 3.0-3.1로 테스트)


답변

Vlasec 답변 의 권장 단계 외에도 다음을 사용할 수 있습니다.


답변

더 쉽게하기 위해 PHP 스크립트를 만들었습니다. 앱을 만듭니다 . 에서 그래프 API 탐색기 당신의 앱을 선택하고 manage_pages 및 publish_pages 권한 토큰 사용자를 얻을. 정보 페이지 하단에서 페이지 ID를 찾으십시오. 구성 변수를 채우고 스크립트를 실행하십시오.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}


답변

삶을 편하게 만드는 또 다른 PHP 답변. Facebook Graph API 2.9 용으로 업데이트되었습니다 . 그냥 채우고 적재하십시오.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

부록 : (대체)

그래프 2.9부터는 짧은 액세스 토큰을 디버깅 한 후 액세스 토큰 디버거 도구 하단에있는 액세스 토큰 확장을 클릭하여 긴 액세스 토큰을 얻는 번거 로움을 상당 부분 무시할 수 있습니다. 및 에 대한 정보로 무장하고 아래 PHP를 실행하여 영구 액세스 토큰을 얻으십시오.pageidlonglivedtoken

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

두 번째 코드는 많은 번거 로움을 덜어 주지만 pageid와 userid를 교차 확인하기 때문에 서두르지 않는 한 첫 번째 PHP 코드를 실행하는 것이 좋습니다. 실수로 사용자 토큰을 선택하면 두 번째 코드가 작동하지 않습니다.

dw1Rob 덕분에


답변

나는 다음 단계를 시도했다 :
https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

영구 페이지 액세스 토큰 받기

  • 그래프 API 탐색기로 이동
  • 에서 을 선택하십시오 .응용
  • 오래 사용 된 액세스 토큰을 액세스 토큰에
  • 액세스 토큰 을 원하는 페이지를 선택하십시오. 액세스 토큰이 새 문자열로 나타납니다.
  • 이 액세스 토큰의 속성을 보려면 i 를 클릭하십시오
  • “액세스 토큰 도구에서 열기”버튼을 다시 클릭하여 “액세스 토큰 디버거”도구를 열어 속성을 확인하십시오.

한 가지 팁, 페이지 언어가있을 때만 작동했습니다. 영어 효과적 이었습니다.


답변

페이지 데이터 만 요청하는 경우 페이지 액세스 토큰을 사용할 수 있습니다. 사용자 액세스 토큰을 얻으려면 사용자에게 한 번만 권한을 부여해야합니다. 유효 기간을 2 개월로 연장 한 다음 페이지의 토큰을 요청하십시오. 이것은 모두 시나리오 5에 설명되어 있습니다. 획득 한 페이지 액세스 토큰은 사용자 액세스 토큰이 유효한 동안에 만 유효합니다.