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


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 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로 테스트)


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

dw1Rob 덕분에


액세스 토큰 확장 버튼이 없습니다. 뭔가 빠졌습니까?
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.