나는 페이스 북 페이지를 데이터 소스 중 하나로 가진 프로젝트를 진행합니다. GUI를 사용하지 않고 주기적으로 일부 데이터를 가져옵니다. 그런 다음 웹 앱을 사용하여 이미 보유한 데이터를 표시합니다.
모든 정보가 공개 된 것은 아닙니다. 즉, 데이터에 한 번 액세스 한 다음 유지해야합니다. 그러나 프로세스를 모르고 아직 좋은 자습서를 찾지 못했습니다. 내가 필요하다고 생각합니다. access_token
단계별로 사용자로부터 어떻게 얻을 수 있습니까? 사용자가 페이스 북 페이지의 관리자 인 경우 페이지에 FB 앱을 추가해야합니까?
편집 : 팁 주셔서 감사합니다 @ phwd. offline_access
더 이상 존재하지 않아도 영구적 인 페이지 액세스 토큰을 얻는 방법에 대한 자습서를 만들었습니다 .
편집 : 방금 여기에 답이 있음을 알았습니다 : 서버가 FB 페이지 정보를 가져 오기 위해 오래 지속되는 FB 액세스 토큰
답변
Facebook의 확장 페이지 토큰 설명서 에 나와있는 지침에 따라 만료되지 않는 페이지 액세스 토큰을 얻을 수있었습니다.
달리 언급 된 경우를 제외하고 이러한 모든 단계 에서 그래프 API 탐색기 를 사용하는 것이 좋습니다 .
0. Facebook 앱 만들기
이미 앱이있는 경우 1 단계로 건너 뜁니다.
- 내 앱으로 이동하십시오 .
- “+ 새 앱 추가”를 클릭하십시오.
- 웹 사이트 앱을 설정하십시오.
권한이나 다른 것을 변경할 필요가 없습니다. 액세스 토큰을 사용하기 전에 사라지지 않는 앱만 있으면됩니다.
1. 사용자 단기 액세스 토큰 받기
- 그래프 API 탐색기로 이동하십시오 .
- 액세스 토큰을 받으려는 응용 프로그램을 선택하십시오 ( “내 응용 프로그램”메뉴가 아닌 “응용 프로그램”드롭 다운 메뉴에서).
- “Get Token”> “Get User Access Token”을 클릭하십시오.
- 팝업의 “확장 권한”탭에서 “manage_pages”를 확인하십시오.
- “액세스 토큰 가져 오기”를 클릭하십시오.
- 대상 페이지를 관리 할 수있는 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 Explorer 및 Access Token Debugger 만 사용하는 솔루션입니다 .
- 그래프 API 탐색기 :
- 오른쪽 상단 드롭 다운 메뉴에서 앱을 선택하십시오.
- 드롭 다운 (액세스 토큰 필드 오른쪽)에서 “사용자 액세스 토큰 가져 오기”를 선택하고 필요한 권한을 선택하십시오.
- 사용자 액세스 토큰 복사
- 액세스 토큰 디버거 :
- 복사 한 토큰을 붙여넣고 “디버그”를 누릅니다.
- “액세스 토큰 확장”을 누르고 생성 된 오래 지속 된 사용자 액세스 토큰을 복사하십시오.
- 그래프 API 탐색기 :
- 복사 된 토큰을 “액세스 토큰”필드에 붙여 넣기
- “PAGE_ID? fields = access_token”으로 GET 요청을하십시오.
- 응답에서 영구 페이지 액세스 토큰을 찾으십시오 (노드 “access_token”)
- (선택 사항) 액세스 토큰 디버거 :
- 영구 토큰을 붙여넣고 “디버그”를 누르십시오
- “만료”는 “사용 안함”이어야합니다.
(API 버전 2.9-2.11, 3.0-3.1로 테스트)
답변
Vlasec 답변 의 권장 단계 외에도 다음을 사용할 수 있습니다.
- 쿼리를 작성하기위한 그래프 API 탐색기
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
- 액세스 토큰 디버거 는 액세스 토큰에 대한 정보를 얻습니다.
답변
더 쉽게하기 위해 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를 실행하여 영구 액세스 토큰을 얻으십시오.pageid
longlivedtoken
<?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 코드를 실행하는 것이 좋습니다. 실수로 사용자 토큰을 선택하면 두 번째 코드가 작동하지 않습니다.
답변
나는 다음 단계를 시도했다 :
https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer
영구 페이지 액세스 토큰 받기
- 그래프 API 탐색기로 이동
- 에서 앱 을 선택하십시오 .응용
- 오래 사용 된 액세스 토큰을 액세스 토큰에
- 액세스 토큰 옆 을 원하는 페이지를 선택하십시오. 액세스 토큰이 새 문자열로 나타납니다.
- 이 액세스 토큰의 속성을 보려면 i 를 클릭하십시오
- “액세스 토큰 도구에서 열기”버튼을 다시 클릭하여 “액세스 토큰 디버거”도구를 열어 속성을 확인하십시오.
한 가지 팁, 페이지 언어가있을 때만 작동했습니다. 영어 효과적 이었습니다.
답변
페이지 데이터 만 요청하는 경우 페이지 액세스 토큰을 사용할 수 있습니다. 사용자 액세스 토큰을 얻으려면 사용자에게 한 번만 권한을 부여해야합니다. 유효 기간을 2 개월로 연장 한 다음 페이지의 토큰을 요청하십시오. 이것은 모두 시나리오 5에 설명되어 있습니다. 획득 한 페이지 액세스 토큰은 사용자 액세스 토큰이 유효한 동안에 만 유효합니다.