본문 바로가기

Data & MarTech/Social Network APIs

[Facebook] 페이스북 파이썬 라이브러리를 활용한 페이지 API 연동

반응형

페이스북 파이썬 라이브러리를 활용한 페이지 API 연동


 

Overview

페이지 API는 페이스북 개발자센터에 등록한 앱을 통해 페이지에 페이지 및 컨텐츠를 생성하거나 관리하는 기능을 제공하는 페이스북 그래프 API(Facebook Graph API)입니다.

 

Getting Started

페이지 만들기

페이스북 페이지 생성 메뉴
페이스북 페이지 만들기

 

앱 생성

Facebook Developer Center에서 페이스북 앱을 생성합니다.

Create App

 

전 기존에 생성한 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' 실행

Access Token Debugger
Extend Access Token & Debug

기존 액세스 토큰을 장기실행이 가능한 토큰으로 변경하였습니다. 'Debug'를 눌러 어떤 권한 설정이 되었는지 다시 확인해 봅니다.

Debugging a Long-lived Access Token

기존에 발급된 토큰과 달리 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}

유저ID에 연결된 페이지정보 조회

특정 페이지 상세정보 조회

특정페이지 상세정보 조회

페이지 컨텐츠 생성(페이스북 공식문서 링크)
# 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

Page Content 등록 결과

페이스북 페이지에도 포스트가 잘 올라갔는지 확인합니다. 페이지 포스트에 컨텐츠 내용과 링크가 자동으로 Embed된 것이 보입니다.

페이지 확인

 

참고자료

페이스북 장기실행토큰(Facebook Long-lived Access Token)
 

장기 실행 토큰 가져오기 - Facebook 로그인 - 문서 - Meta for Developers

이 호출은 클라이언트가 아닌 서버에서 보내야 합니다. 이 API 호출에는 앱 시크릿 코드가 포함되므로 클라이언트 측 요청을 보내지 않아야 합니다. 대신 요청을 보내는 서버 측 코드를 구현한

developers.facebook.com

Facebook Ads API - Preventing Your Access Token From Expiring

 

반응형