페이스북 파이썬 라이브러리를 활용한 페이지 API 연동
Overview
페이지 API는 페이스북 개발자센터에 등록한 앱을 통해 페이지에 페이지 및 컨텐츠를 생성하거나 관리하는 기능을 제공하는 페이스북 그래프 API(Facebook Graph API)입니다.
Getting Started
페이지 만들기
앱 생성
Facebook Developer Center에서 페이스북 앱을 생성합니다.
전 기존에 생성한 Jason App을 이용하여 테스트를 진행하도록 하겠습니다.
액세스토큰 사용(Using Facebook Access Token)
그래프 API 탐색기(Graph API Explorer)
앱 및 User or Page 선택, Permission 추가
Facebook Ads, Business Manager, Page 글쓰기 및 읽기 등에 필요한 권한을 추가하였습니다.
페이스북 장기실행토큰(Long-lived Access Token) 생성
기본적으로 생성되는 페이스북 액세스토큰은 1-2 시간 안에 만료되기 때문에 새로 토큰을 발급받아야 하는 번거로움을 줄이고자 할 경우 장기실행토큰을 만들어서 사용하면 됩니다. 장기실행토큰은 페이스북 로그인 시 받은 토큰을 이용하여 다시 발급받는 방식입니다.
페이스북 문서에 따르면 유효기간은 아래와 같습니다.
- 단기 실행 사용자 액세스 토큰은 1시간 동안 유효합니다.
- 장기 실행 사용자 액세스 토큰은 60일 동안 유효합니다.
- 단기 실행 페이지 액세스 토큰은 1시간 동안 유효합니다.
- 장기 실행 페이지 액세스 토큰은 만료 날짜가 없습니다.
How to:
- Facebook 로그인 다이얼로그에서 받은 단기 실행 토큰(Short-lived Access Token) 복사
- Access Token Debugger에서 단기실행토큰을 복사한 다음 'Debug' 실행
기존 액세스 토큰을 장기실행이 가능한 토큰으로 변경하였습니다. 'Debug'를 눌러 어떤 권한 설정이 되었는지 다시 확인해 봅니다.
기존에 발급된 토큰과 달리 Expires가 Never로 변경되었습니다. 정상적으로 토큰이 동작하는지 그래프 API 탐색기(Graph API Explorer)에서 테스트를 해보도록 하겠습니다.
그래프 API 테스트(Testing Graph APIs)
위 단계에서 생성된 장기생성토큰(Long-lived Access Token)을 복사하여 몇 가지 Graph API 테스트를 해봅니다.
사용자 정보 조회
GET {Graph API version}/me?fields=id,name
페이지 정보 조회
위 API 리턴 결과의 id값을 누르면 해당 유저ID에 매핑된 어카운트 데이터 조회가 가능합니다.
GET /{Graph API version}/{User ID}/accounts?fields=name,access_token&access_token={long-lived access token}
특정 페이지 상세정보 조회
페이지 컨텐츠 생성(페이스북 공식문서 링크)
# https://developers.facebook.com/docs/pages/publishing
curl -i -X POST "https://graph.facebook.com/{page-id}/feed
?message=Hello Fans!
&access_token={page-access-token}"
페이지 컨텐츠를 생성할 때는 Graph API 버전을 v17.0으로 변경하였습니다. 기존 v14.0으로 할 경우 publish_to_groups 권한이 필요한데 해당 권한은 deprecated되어, 현재 기준으로 생성된 유저 권한에는 publish_to_groups가 없어 API 권한에러가 리턴됩니다. 아래 Stack over flow 참고하세요.
Facebook API v3 - publish_to_groups Not Working
I'm trying to update my app to use the new group permissions, specifically publish_to_groups. The oauth process works fine but when I go to post I'm getting... "(#200) Requires either publish_acti...
stackoverflow.com
페이스북 SDK 설치 및 테스트 앱 구현
파이썬 가상환경 설정
# Create a virtual environment only for this project
$ virtualenv venv
# Activate the virtual environment
$ source venv/bin/activate
SDK 설치
# facebook sdk
pip install facebook-sdk
# dotenv
pip install python-dotenv
.env 파일 생성
.env파일을 프로젝트 루트 경로에 생성합니다. (해당 파일은 Git 파일 등에 추가하지 마세요.)
APP_ID=<your app id>
APP_SECRET=<your app secret>
ACCESS_TOKEN=<long-lived access token>
파이썬 코드 구현
페이지에 포스트 내용과 링크를 함께 적용하도록 추가합니다. 참고로 코드로 전체 플로우를 구현할 경우 Facebook 로그인 및 Access Token 획득, 유저ID, 페이지 ID 과정을 구현하면 됩니다.
import os
from dotenv import load_dotenv
from facebook import GraphAPI
# Load environment variables from .env file
load_dotenv()
app_id = os.getenv('APP_ID')
app_secret = os.getenv('APP_SECRET')
# Create a Facebook Graph API object
# ACCESS_TOKEN은 앞의 과정에서 생성한 장기 토큰을 사용합니다.
graph = GraphAPI(access_token=os.getenv('ACCESS_TOKEN'))
# Create a Facebook Page Content
message = 'Amplitude is one of the popular product analytics tools'
link = 'https://amplitude.com/'
pages = ['<your page id>']
for page in pages:
graph.put_object(page, 'feed', message=message, link=link)
print(graph.get_connections(page, 'feed'))
코드실행
(venv) $ python main.py
페이스북 페이지에도 포스트가 잘 올라갔는지 확인합니다. 페이지 포스트에 컨텐츠 내용과 링크가 자동으로 Embed된 것이 보입니다.
참고자료
페이스북 장기실행토큰(Facebook Long-lived Access Token)
장기 실행 토큰 가져오기 - Facebook 로그인 - 문서 - Meta for Developers
이 호출은 클라이언트가 아닌 서버에서 보내야 합니다. 이 API 호출에는 앱 시크릿 코드가 포함되므로 클라이언트 측 요청을 보내지 않아야 합니다. 대신 요청을 보내는 서버 측 코드를 구현한
developers.facebook.com
Facebook Ads API - Preventing Your Access Token From Expiring
'Data & MarTech > Social Network APIs' 카테고리의 다른 글
New York Times, 레진코믹스 메타 태그 엿보기 (0) | 2014.07.17 |
---|---|
Twitter Card 사용하기 (0) | 2014.07.16 |