서버가 FB 페이지 정보를 가져 오기위한 오래 지속되는 FB 액세스 토큰


114

Facebook 액세스 토큰과 그로 인한 슬픔에 대한 많은 질문이 있다는 것을 알고 있지만 많은 실험과 실망스럽고 모호한 블로그 기사 (FB 및 기타)를 많이 읽음에도 불구하고 여전히 내 요구에 대한 명확한 답변을 얻기 위해 고군분투하고 있습니다. . 지금까지의 프로세스를 간결하게 분석하겠습니다.

  • 단일 Facebook 페이지에서 게시물 / 상태를 가져와야하는 서버 측 사이트를 만들고 있습니다.
  • 저는 해당 Facebook 페이지의 관리자입니다.
  • Facebook 앱을 만들었습니다
  • Facebook Graph API Explorer를 사용하여 내 앱과 내 계정에 연결된 단기 키를 생성했습니다. 내 계정에 내 페이지의 액세스 토큰을 볼 수있는 권한을 부여합니다.
  • 나는에서 수명이 긴 키에 내 수명이 짧은 키 (육십일) ALA 시나리오 4를 개조 한

그리고 여기에 제가 붙어 있습니다. 내 60 일 키는 내 서버가 페이지에서 필요한 정보를 가져 오는 데 잘 작동하지만, 내가 말할 수있는 한 60 일 키를 프로그래밍 방식으로 확장 할 방법은 없습니다. 또한 수동으로 Facebook Graph API Explorer로 이동하여 생성하지 않고 새로운 단기 키를 생성하는 방법을 모릅니다.

사용자 기반 시스템 (사용자가 Facebook 앱을 다시 인증하도록 쉽게 요청할 수 있음)이 아닌 Facebook API에 요청하는 서버이기 때문에 매우 투박한 시스템이 생성됩니다. Facebook이 더 이상 사용되지 않기 때문에 offline_access내 서버가 내 페이지에서 정보를 가져 오도록하는 영구적 인 방법이 실제로 없습니까? 수동으로 새 키를 만들고 60 일마다 서버를 수동으로 업데이트해야합니까?

아니면 내가 놓친 것이 있습니까?

최신 정보:

이전에 여기에서 찾은 단계별 가이드는 자체 답변 으로 마이그레이션되었습니다 .


굉장합니다. 나는 같은 상황에 있으며이 주제에 대한 정보를 찾고있었습니다. 이 토큰이 FB 플랫폼 정책을 위반하지 않는 것이 안전합니까? 확실하게 요청하는 것뿐입니다.
onigunn

2
@asrijaal Facebook의 자체 문서 (시나리오 5 참조)에 따르면 이러한 페이지 액세스 토큰은 만료되지 않습니다. 나는 그들이 Facebook의 정책을 준수한다고 가정하는 것이 안전하다고 말하고 싶습니다.
redhotvengeance

"나는 명확한 단계별 프로세스를 떠나 좋은 줄 알았는데"- 하늘이 금지 :) 감사 @redhotvengeance을
스티브 맥길

페이지 액세스 토큰 URL에 오타가 있습니다. 이어야합니까? & 애프터 계정이 아닙니다. 이것이 작동하지 않는 이유를 알아 내려고 잠시 보냈습니다. : P
Joren

@Joren Indeed-이제 수정되었습니다. 감사!
redhotvengeance

답변:


188

다음은 이전에 질문에 있었던 단계이며이 답변으로 마이그레이션되었습니다.

만료되지 않는 Facebook 페이지 액세스 토큰 (@Igy의 도움으로)을 생성 할 수 있음을 확인한 후 동일한 것을 찾는 모든 사용자를위한 명확한 단계별 퀴 드가 있습니다.

  1. 정보를 가져 오려는 FB 페이지의 관리자인지 확인하십시오.
  2. FB 앱 생성 (페이지 관리자와 동일한 사용자 계정이어야 함)
  3. 받는 사람 향할 페이스 북 그래프 API 탐색기
  4. 오른쪽 상단의 "Application"드롭 다운 목록에서 생성 한 FB App을 선택합니다.
  5. "액세스 토큰 받기"를 클릭합니다.
  6. manage_pages권한 을 추가했는지 확인하십시오.
  7. 다음 Graph API 호출을 수행하여이 단기 액세스 토큰을 장기 액세스 토큰으로 변환합니다. https://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
  8. 반환 된 새 장기 액세스 토큰을 가져옵니다.
  9. 새로운 장기 액세스 토큰을 사용하여 계정을 보려면 Graph API를 호출합니다. https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. 를 잡아 access_token당신이에서 정보를 당겨됩니다 페이지에 대해
  11. 토큰을 린트 하여 Expires: Never!

그렇게해야합니다. 이제 다음을 제외하고 만료되지 않는 Facebook 페이지 액세스 토큰이 있어야합니다.

  • Facebook 계정 비밀번호를 변경합니다.
  • 대상 페이지에 대한 관리자 액세스 권한이 없습니다.
  • Facebook 앱을 삭제하거나 승인을 취소합니다.

이로 인해 액세스 토큰이 무효화됩니다.

를 얻는 경우 액세스 토큰 디버거(#100) Tried accessing nonexisting field (accounts) on node type (Page) 로 이동하여의 값을 복사 한 다음 9 단계에서 URL의 "me"부분을 바꾸는 데 사용합니다.User ID


2
6 단계는 어디서 어떻게 수행합니까?
Stefan Müller

5
@ StefanMüller Graph API Explorer 페이지에서 "Get Access Token"을 클릭하면 "Select Permissions"대화 상자가 나타납니다. 이 manage_pages옵션은 Extended Permissions탭 아래에 있습니다.
redhotvengeance 2014 년

2
큰! 이것은 매력처럼 작동하며 사용자가 아닌 PAGE로 게시됩니다.
Benjamin Piette 2014

3
나는 이것이 지금 구식이라고 생각합니다. 약 2 개월 후에 만료되는 액세스 토큰 만 받게됩니다.
Qaiser Wali

7
나는 지금 그 모든 것을 수행했으며 수명이 긴 토큰 ID가 2 개월 후에 만료되고 무한하지 않다는 점을 제외하고는 작동합니다. 또한 Acces 토큰 디버거 에는 양식 하단에 단기 액세스 토큰을 장기 액세스 토큰으로 확장하는 링크가 있습니다.
SlimIT 2015 년

15

이것은 오프라인 액세스 지원 중단 문서 에서 다룹니다.

페이지 관리자가 60 일 토큰을 사용하여 페이지 액세스 토큰 ( /PAGE_ID?fields=access_token또는을 통해 /me/accounts) 을 검색합니다. 페이지 액세스 토큰 에는 만료 시간이 없습니다.


5
한숨. 실제로 이것은 티켓 인 것 같습니다. 나는이 단계들의 가능한 모든 조합을 시도했다고 맹세 할 수 있었다. 분명히 나는 ​​실제로 작동하는 단계를 놓쳤다. 절대적으로 복잡한 필수 조치 세트입니다. 도와 주셔서 감사합니다!
redhotvengeance

1
인터넷 전체에 너무 많은 조각이 있습니다. 이것은 실제로 작동하는 것입니다.
Ernesto

page_access_token자바 스크립트의 코드로 60 일을 얻을 수있는 방법이 있습니까? 얻는 방법처럼 user_access_token> FB.getAuthResponse()['accessToken'];감사합니다!
Tulon

3

2019 년에 작동하는 접근 방식

나는 최근에 (이 스레드에 설명 된 사용 사례와 비슷한) 무언가를 달성하려고 노력했지만 Facebook의 현재 정책을 존중하고 싶었 기 때문에 약간의 조사를했고 여기에서 발견 한 내용을 공유하고 있습니다.

내 사용 사례

따라서 이미 말했듯이 제 사용 사례는 여기에 설명 된 것과 매우 유사합니다. 그건:

  • 저는 학군에서 일을하고 있습니다.
  • 그들은 학교 교통과 관련된 거의 모든 것을 관리하기 위해 소프트웨어 도구를 사용하고 있습니다.
  • 이 도구를 사용하면 버스 지연 알림 및 학교 폐쇄 알림을 게시 할 때 이메일 알림을 (구독자에게) 보낼 수 있습니다.
  • 커뮤니티의 많은 사람들이 Facebook 페이지에서 조직을 팔로우하며, 그곳에서 경고를 찾는 유일한 곳입니다.
  • 따라서 조직의 직원은 각 알림을 Facebook 페이지에 수동으로 게시해야합니다 (교통 소프트웨어에서 만드는 것 외에도). 또한 이러한 알림은 결국 만료되므로 (또는 만료되기 전에 단순히 삭제됨) 직원은 나중에 다시 돌아가서 수동으로 삭제해야합니다.
  • 시간이 지나서 우리가 여기서하려는 것은 새로운 (및 만료 된) 알림을 위해 소프트웨어 도구의 데이터베이스를 주기적으로 폴링하고 Facebook 페이지에서 업데이트 (즉, 추가 및 제거)하는 간단한 시스템으로 개발하는 것입니다.

제 생각에는 이것은 합법적 인 사용 사례이지만 Facebook의 정책과 일치하는 방식으로 구현하는 방법을 잘 모르겠습니다.

받아 들여진 대답

나는 받아 들여진 대답의 단계를 따랐고 일이 변경된 것처럼 보이는 것을 제외하고는 작동했다 : 이제 생성 된 페이지 토큰이 만료되지 않더라도 access to data약 60 일 후에 만료됩니다. 절차를 따르고 FB Token Debugger Tool 에서 페이지 토큰을 검사하면 해당 내용도 볼 수 있습니다.

게다가 생성 된 페이지 토큰이 사용자 계정에 연결되어 있다는 사실도 사용자가 자신의 비밀번호를 업데이트하면 페이지 토큰도 무효화되기 때문에 불행한 일입니다.

2019 년에하는 방법

몇 시간의 조사 끝에 저는 Facebook 문서 기사 인 직접 비즈니스를위한 비즈니스 로그인을 우연히 발견했습니다 .

이제 위 기사에 설명 된 단계에 따라 특정 Facebook 사용자 계정과 연결되지 않고 만료되지 않는 페이지 토큰을 생성 할 수 있습니다 (FB 앱이 삭제되거나 기본 애플리케이션 토큰이 아닌 경우). 삭제되면 알다시피 ...)

따라서 단계와 가장 중요한 부분은 다음과 같습니다.

  • 비즈니스 관리자 계정 이 필요 합니다.
    • 확인이 필요하며 디지털 계약서에 서명해야합니다.
  • 해당 계정에 대상 Facebook 페이지를 추가해야합니다.
  • Facebook 앱을 만들고 해당 앱도 동일한 Business Manager 계정으로 전송해야합니다.
  • 다음 권한이 필요하므로 앱은 Facebook의 검토 프로세스를 거쳐야합니다. manage_pagespublish_pages.
    • 중요 참고 사항 페이지 생성 토큰을 사용하여 만든 게시물이 애플리케이션 관리자 이외의 사용자에게 표시 되려면 해당 앱이 게시되고 승인되어야합니다.
    • 검토를 위해 제출하지 않고도 개념을 실험 할 수는 있지만 게시물은 공개적으로 표시되지 않습니다.
  • 비즈니스 관리자 계정 (앱과 페이지가 계정에 추가 된 후에 만 ​​해당)에서 시스템 사용자 를 생성하고 해당 사용자에게 대상 Facebook 페이지에 대한 관리자 역할 (또는 권한)을 부여해야합니다.
    • 시스템 사용자는 Business Manager 계정이 소유하며 특정 사용자와 연결되어 있지 않습니다. 내 현재 이해는 시스템 사용자의 주요 사용 사례 중 하나가 Facebook의 Graph API에 대한 프로그래밍 방식 액세스 (우리가 필요로하는 것)라는 것입니다.
  • 그런 다음 해당 시스템 사용자에 대해 만료되지 않는 액세스 토큰을 생성해야합니다. 어떤 앱을 선택하라는 메시지가 표시됩니다. 그런 다음 대상 앱을 선택합니다.
  • 그런 다음 생성 된 앱 토큰을 사용하여 만료되지 않는 페이지 토큰을 생성해야합니다. 이 문서에서는 절차를 다음 과 같이 설명 합니다.
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
  • 그게 다야.

이 토큰은 만료되지 않으며 특정 Facebook 사용자와 연결되지 않으므로 정확히 필요한 것입니다!

마지막 부분은 Facebook 앱이 Facebook에서 승인을 받았는지 확인하는 것입니다. 사람들이 우리 게시물을 보지 않으면 전체 절차가 가치가 없기 때문에 실제로 가장 중요한 부분입니다.

저는 위의 절차에 따라 Facebook이 결국 거부하지 않고 제 고객을 위해 무언가를 구축 할 수 있는지 확실히 알고 싶었습니다. 그래서 사전에 (즉 제 고객의 프로젝트 작업을 시작하기 전에) 저는 다음의 전체 프로세스를 거쳤습니다. 페이지, 앱, 비즈니스 관리자 계정 등을 만듭니다. 비즈니스를 인증했습니다. 검토를 위해 앱을 제출했습니다. 내 요청에서 나는 내 사용 사례에 대해 매우 구체적이고 앱이 "자체 사용"을위한 것이라고 강조했습니다 (즉, 조직이 다른 Facebook 사용자가 아닌 자체적으로 앱을 개발하고 있음). 24 시간 이내에 승인을 받았습니다.

앱 검토 프로세스에 대한 몇 가지 기타 참고 사항 :

  • 앱 플랫폼을 선택해야했기 때문에 웹 사이트를 선택했습니다 .
  • 앱에 두 가지 권한이 필요한 이유와 사용 방법을 표시해야했습니다.
  • 검토자가 내 앱에 로그인 할 수없는 이유를 표시하고 앱을 사용해보아야했습니다 (예 : 작업자 프로세스에서 앱을 사용하기 때문).
  • 필수 스크린 캐스트의 경우, curl유틸리티를 사용하여 터미널에서 수동 작업을 제공했습니다 (페이지 토큰을 생성하고 Facebook 페이지에 게시물을 작성하기 위해). 또한 Business Manager를 사용하여 시스템 사용자를 페이지에 연결하고 토큰을 생성하는 방법 등을 보여주었습니다.
  • 다시 말하지만, 저는 제 사용 사례에 대해 매우 구체적이고 그것이 도움이되었다고 생각합니다.

이 정보가 유사한 사용 사례를 가진 사람들에게 유용하기를 바랍니다.


1

단계별 가이드를 위해 @redhotvengeance에게 감사드립니다.

얼마 후 Facebook 문서에 명확하게 설명되어 있습니다.

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

페이지 액세스 토큰 확장

앱은 페이지 관리자 사용자가 manage_pages 권한으로 인증 할 때 페이지 액세스 토큰을 검색 할 수 있습니다. 이 페이지 액세스 토큰을 검색하는 데 사용 된 사용자 액세스 토큰이 수명이 짧은 경우 페이지 액세스 토큰도 수명이 짧습니다.

수명이 더 긴 페이지 액세스 토큰을 얻으려면 위와 같이 사용자 액세스 토큰을 수명이 긴 토큰으로 교환 한 다음 페이지 액세스 토큰을 요청합니다. 결과 페이지 액세스 토큰에는 만료 시간이 없습니다.


0

Facebook의 앱 대시 보드에서 복사하여 붙여 넣을 수도 있습니다. 단계들:

  1. https://developers.facebook.com으로 이동합니다.

  2. 페이지의 오른쪽 상단 모서리에서 앱을 선택합니다 (모양의 그림).

  3. 왼쪽의 옵션에서 메신저를 클릭하십시오 (자동으로 설정으로 이동합니다) (모양 사진).
  4. 페이지의 "토큰 생성"섹션으로 이동합니다. 토큰을 생성 할 페이지를 선택하십시오. (그 섹션이 어떻게 생겼는지에 대한 사진)
  5. 필요할 때마다 페이지 토큰을 복사하고 붙여 넣습니다.

이론적으로 토큰은 만료되지 않지만 로그인 한 페이스 북 계정에 직접 연결되어 있다는 점을 명심하십시오. 따라서 암호를 변경하거나 계정과 앱 사이에서 권한을 제거하면 토큰이 더 이상 유효하지 않게됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.