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


193

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

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

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

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



확실히 그렇게 보인다. 나는 더 나은 제목을 가지고 있고, 더 자세한 질문을 가지고 있으며, 우리는 거의 같은 대답을 받아 들였습니다.
— Vlasec

답변:


638

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"라고 표시되어야합니다.


14
페이스 북은 더 이상 작동하지 않도록 이것을 엉망으로 만들었습니다. :-( 위의 1.5 단계 ( "액세스 토큰 가져 오기"버튼 클릭) 후 "로그인 검토 제출-아래 권한 중 일부가 Facebook에서 사용하도록 승인되지 않았습니다"라는 빨간색 경고가 다음 대화 상자에 나타납니다. "이 앱은 Facebook에 게시 할 수 없습니다"라는 텍스트가 표시된 자물쇠가 아래에 동시에 나타납니다. 따라서 1.5 단계와 1.6 단계 사이에 새로운 앱 단계를 삽입해야합니다. 그런 다음 검토를 위해 제출 한 다음기도하고 기다립니다. ":-( 누구든지 순수한 테스트 앱을 사용하는 방법을 알고 있습니까?
— QuestionOverflow

10
마지막 단계에 도달하고 브라우저가 반환 message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 되는 사람은 FB 액세스 토큰 디버거로 이동하여 long_lived_access_token을 테스트하십시오. 지속적으로 당신이 되돌아 가서 다시 확인하면 몇 분 후 long_lived_access_token FB 액세스 토큰 디버거가 그 토큰이 영구적임을 나타냅니다 것이라고 보았다 (만료되지 : 않음)
— AdjunctProfessorFalcon

14
맹세합니다.이 답변을 읽지 못했다면 여전히 짧은 수명의 토큰으로 벽에 머리를 부딪 칠 것입니다 ... 마지막 부분이 작동하지 않는다는 점에서 ... (#100) Tried accessing nonexisting field (accounts) on node type (Page)오류가 발생합니다 .. 5 단계를 진행할 수 없습니다 ... 그래도 감사합니다 ... LE : @Vlasec에서 제공 한 답변의 마지막 부분을 확인하십시오. / {pageId}? fields = access_token & access_token = {long_lived_access_token}을 쿼리하여 영구 액세스 토큰을 얻을 수 있으므로 문제가 해결되었습니다.
— Mujnoi Gyula Tamas

15
v2.7의 경우에도 "계정"이 존재하지 않으므로 영구 액세스 토큰을 얻기 위해 마지막 단계에서이 기능을 사용해야했습니다.https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
— Reado

5
마지막 단계에서 다음과 같은 예외가 발생합니다. { "error": { "message": "Syntax error \"문자 11에서 \ "? \". \ 대신 문자열 끝을 예상했습니다. access_toke \ u200c \ u200bn " , "type": "OAuthException", "code": 2500, "fbtrace_id": "A8 + gtSaShIO"}} 누구나 문제를 해결하는 방법을 알고 있습니까 ????
— Lucy

89

다음은 Graph API Explorer 및 Access 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로 테스트)


3
누를 "액세스 토큰 연장"버튼이 없습니다. 어쩌면 그들은 그것을 꺼냈다.
— Cesar Bielich

4
"확장"버튼이 표시됩니다
— Eduardo

2
액세스 토큰을 확장하고 (2 단계) 다시 디버깅 한 후에는 만료되지 않아야합니다. 3 단계와 4 단계를 통과해도됩니다.
— daniel_serretti

1
위의 큰 답변보다 이해하기 쉬운이 답변에 감사드립니다. 정말 도움이되었습니다.
— Paul Laffitte

2
오, 친구, 당신은 불타고 있습니다! 큰 감사를 드린다! 앱을 제대로 디버깅 할 수 없어서이 옵션을 찾는 데 너무 많은 시간을 낭비했습니다!
— 킬 루미나 티

11

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


3
더 이상 작동하지 않습니다. 토큰은 1 시간 동안 만 지속됩니다.
— flashsnake

@flashsnake v2.8에서 실제로 이것을 테스트 했습니까? 토큰 디버거는 Expires Never
— Bizmate를

기억이 안나요 나는 그것을 테스트했을 수 있습니다.
— flashsnake

11

더 쉽게하기 위해 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;
}

1
+1 방금 시도한 결과, 부분적으로 감가 상각되는 모든 답변 중에서 놀라운 결과를 냈습니다! 여기저기서 약간의 편집만으로 향후 수정이 쉬우므로이 답변이 마음에 듭니다.
— Siddhant Rimal

죄송합니다.이 답변을 편집 할 수 없습니다. 따라서 Graph API 2.9의 경우 다른 답변을 작성 했습니다.
— Siddhant Rimal

이 예제들 중 어느 것도 더 이상 작동하지 않기 때문에 2.9로 변경 된 것 같습니다.
— Cesar Bielich

10

삶을 편하게 만드는 또 다른 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 코드를 실행하는 것이 좋습니다. 실수로 사용자 토큰을 선택하면 두 번째 코드가 작동하지 않습니다.

dw1 과 Rob 덕분에


액세스 토큰 확장 버튼이 없습니다. 뭔가 빠졌습니까?
— Cesar Bielich

@CesarBielich : 먼저 Short Access Token을 디버깅해야합니다. 짧은 앱 토큰을 디버깅 하면 결과 아래에 나타납니다 . 볼 수 없으므로 사용자 액세스 토큰을 디버깅해야합니다. 이 답변은 액세스 토큰 사용에는 적용되지 않습니다. 앱 액세스 토큰 만 사용할 수 있습니다. 사용자 액세스 토큰은 영구적 일 수 없습니다. 이들은 긴 토큰까지 생성 될 수 있습니다.
— Siddhant Rimal

1
@CesarBielich 나는 여기에 뭔가 혼란 스럽다고 생각합니다. 사용자, 앱 및 페이지에 대한 액세스 토큰을 만들 수 있습니다. 토큰을 요청하기 전에 애플리케이션 필드 대신 생성 한 앱 을 선택 해야합니다 Graph API Explorer.
— Siddhant Rimal 2016 년

@CesarBielich : 두 번째 방법이 너무 혼란 스럽다면 첫 번째 방법을 사용하십시오. 첫 번째 필드에 입력 필드를 채우면 모든 것이 자동으로 수행됩니다 :)
— Siddhant Rimal

지난 밤에 롤을 한 다른 게시물에 대해 언급하고 미안합니다. 네 어떤 이유로 나는 당신을 일하게하고 결코 만료되지 않는 토큰으로 만들 수 없었습니다. 나는 제거했다v2.9 두 번째 전화에서 했고 그것은 나를 위해 일했다. 이상한
— 세자르 Bielich

6

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

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

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

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


1
이 남자!!! 5 개의 가상 맥주. 이것은 승인 된 답변의 5 단계를 대체하여 작동합니다. 그래프 버전 2.8
— Root-

1
Facebook API를 사용하는 데 몇 주를 낭비했습니다. 지금까지 내가 본 가장 혼란스럽고 일관성이없는 토큰입니다. 이 솔루션은 여전히 ​​완벽하게 작동합니다 .. 2017 년 10 월
— 919426

4

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


미안, 어쩌면 나는 충분히 명확하지 않았다. 토큰에 대해 읽었으며 사용자에게 권한을 요청하고 토큰을 내 앱으로 전송하는 방법을 배우기 만하면됩니다. 유일한 목적으로 권한을 요구하는 페이스 북 "앱"을 만들어야합니까?
— Vlasec

1
@Viasec 액세스 토큰을 얻는 유일한 방법은 여기에 설명 된대로 응용 프로그램을
— 통하는

고마워, 나는 그것을 어떻게 든 무시했다. 나는 그것을 API 섹션의 어딘가에 있다고 가정했다. 나는 그것을 볼 것이고, 그것이 내 질문에 대답하기를 바랍니다.
— Vlasec 2016 년

4

영구 액세스 토큰을받는 동안 Donut이 언급 한대로 5 단계 이상을 수행했습니다 . 그러나 5 단계에서는 영구 액세스 토큰을 생성하는 동안 영구 액세스 토큰 (만료되지 않음)이 아닌 장기 액세스 토큰 (2 개월 동안 유효)을 반환합니다. 내가 주목 한 것은 현재 버전의 Graph API가 V2.5입니다. V2.5를 사용하여 영구 액세스 토큰을 제공하는 영구 액세스 토큰을 얻으려는 경우 V2.2로 API 호출을 시도하십시오 (그래프 API 탐색기에서 버전을 변경할 수없는 경우 API 호출 https를 누르십시오) . //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = { V2.2의 새 탭에서)) 그러면 영구 액세스 토큰을 얻게됩니다 (만료되지 않은)


API 버전을 다시 사용하여 결과를 얻으려면 특히 API 버전이 특정 시간이 지나면 만료되므로 나중에 찾은 작업이 더 많아 질 것입니다.
— SlickRemix

이 널 (null)을 반환 :( 우리가 페이지 액세스 토큰을 얻을 수 있습니까?
— 낸시를 thakkar

3

언급 된 방법 외에도 서버 간 응용 프로그램의 경우 다음과 같은 영구 액세스 토큰 형식을 사용할 수 있습니다. app_id | app_secret이 유형의 액세스 토큰을 App Token이라고합니다. 일반적으로 Graph API를 호출하고 애플리케이션 백엔드 내의 퍼블릭 노드를 쿼리하는 데 사용할 수 있습니다. 여기에 언급되어 있습니다 : https://developers.facebook.com/docs/facebook-login/access-tokens


1
어떤 종류의 페이지에도 액세스 할 수 있습니까? 나는 그것이 그렇지 않다고 생각하며 실제로는 질문에 대답하지 않습니다.
— Vlasec

@Vlasec 그것은 당신이 공공 게시물에 댓글에 액세스 할 수 있습니다
— 알리 Gajani

1
그 정도면 충분하지만 질문에 대답하지 않습니다.
— Vlasec

2

@donut 덕분에 JavaScript에서 절대 만료되지 않는 액세스 토큰을 얻을 수있었습니다.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

그런 다음 저장된 액세스 토큰을 다음과 같이 사용했습니다

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

이 코드가 다소 지저분하기 때문에 누군가 가이 코드를 다룰 수 있기를 바랍니다.하지만 내가 생각할 수있는 유일한 방법이었습니다.


2

페이스 북 앱이 있다면 app-id & app-secret을 사용해보십시오.

처럼 :

access_token={your-app_id}|{your-app_secret}

토큰을 자주 변경할 필요가 없습니다.


1

응용 프로그램 요청 제한에 도달했습니다 (# 4)-FB API v2.1 이상

이 답변은 "우리를위한 궁극적 인 답변"으로 이끌었습니다. 그래서 그것은 매우 관련되어 있으므로 여기에 추가하겠습니다. 위와 관련되어 있지만 다르며 FB가 프로세스를 단순화 한 것으로 보입니다.

FB가 API를 v 2.1로 롤오버 할 때 사이트의 공유 횟수가 중단되었습니다. 우리의 경우에는 이미 FB APP을 가지고 있었고 FB 로그인을 사용하지 않았습니다. 우리가해야 할 일은 새로운 요청을하기 위해 FB APP 토큰 을 얻는 것이 었습니다 . 2016 년 8 월 23 일 현재입니다.

  1. https://developers.facebook.com/tools/explorer로 이동 하십시오.
  2. API 버전을 선택한 다음 GET을 사용하여 다음을 붙여 넣습니다.

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    당신은 당신의 응용 프로그램 ID를 잡아 가고 싶을 것입니다 및 응용 프로그램의 비밀 앱 페이지를. 메인 FB 앱 개발자 페이지

  3. 그래프 쿼리를 실행하면 다음이 표시됩니다.

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    어디

    "앱 ID"
    과
    "앱 토큰"
    FB 앱 페이지의 앱 ID와 방금 수신 한 생성 된 FB 앱 해시입니다.

  4. 다음으로 새로운 APP 액세스 토큰을 테스트하십시오. FB 액세스 토큰 테스터

  5. 붙여 넣음으로 볼 수 있습니다

    "앱 토큰"
    만료 날짜 / 시간이없는 단일 앱 기반 토큰 인 토큰 테스터에.

우리의 경우 우리는 FB js sdk를 사용하고 있으므로 호출을 그렇게 변경했습니다 (이것은 공유 카운트 와 주석 카운트가 아닌 공유 카운트를 얻습니다 ) .

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

이제 제대로 작동합니다. FB API에 대한 토큰 화 된 요청을 시작해야 함을 확인하기 위해 많은 검색과 FB의 공식 버그 보고서가 필요했습니다. 옆으로 나는 그들 (FB)이 토큰 화 된 요청을 언급하는 오류 코드 (# 4)에 단서를 추가하도록 요청했습니다.

토큰 화 된 요청에 대한 새로운 요구로 인해 FB 주석 수가 손상되었다는 또 다른 보고서를 개발자 중 한 명으로부터 얻었으므로 이에 따라 업데이트 할 것입니다.


1
항상 로그인을하고 앱에 액세스를 허용 한 사람은 앱의 사용자였습니다. 어쨌든, 이것은 페이지 액세스 토큰을 생성하지 않는 것 같으므로 질문에 대한 올바른 대답이 아니라고 생각합니다. 흥미롭지 만-직접 Q / A를 하시겠습니까?
— Vlasec

1

이 예제 중 많은 것이 작동하지 않습니다 .2.9V가 나오기 때문에 확실하지 않지만 머리를 두드리고있었습니다. 어쨌든 나는 @ dw1 버전을 가져 와서 @KFunk 비디오의 도움으로 조금 수정하고 2.9 동안 나를 위해 일했습니다. 도움이 되었기를 바랍니다.

$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/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}

좋은 스 니펫이지만이 질문은 PHP로 작성하는 방법이 아니라 Java 또는 .NET에서도 수행 할 수있는 API 자체를 사용하는 방법에 관한 것입니다. 예를 들어 Java로해야했습니다. 의사 코드 또는 단계별 가이드는 PHP를 사용하지 않는 사람들에게 더 유용합니다.
— Vlasec

2
@Vlasec이 PHP 스 니펫은 의사 코드와 매우 유사하며 이해하기 쉽다고 주장합니다. Casar은 이미 페이스 북에서 제공 한 일부 API를 사용하고 있습니다. 나머지는 자명하다.
— Siddhant Rimal

0

2020 년 4 월 기준으로 이전에 영구적 인 페이지 토큰이 1 시간에서 12 시간 사이에 만료되기 시작했습니다. manage_pages이전 목표를 달성 할 수 있는 권한으로 사용자 토큰을 사용하기 시작했습니다 (페이지의 이벤트 폴링). 이 토큰은 영구적 인 것으로 보입니다.

github.com/k-funk/facebook_permanent_token에 호스팅 된이 게시물에있는 정보를 기반으로 파이썬 스크립트를 작성하여 필요한 매개 변수와 영구 토큰을 얻는 방법을 추적합니다.


-1

나는 실제로 많은 도움 이 되는 이 도구 를 언급하는 이 대답 을 찾았 습니다.

이 답변을 읽을 때이 답변이 여전히 유효하기를 바랍니다.


확인. 도넛의 답변이 여전히 작동합니까, 아니면 추가 단계가 필요합니까?
— Vlasec
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.