소개
n8n - Threads 연동을 위해서는 Threads API(이하, Access token) 설정/연동이 필요합니다.
문제는 Threads token은 기본적으로 1시간짜리 단기 액세스 토큰만 발급됩니다.
하지만 자동화 시나리오를 구현하고 찐사용을 하려면 최소 며칠 이상 유지되는 토큰이 필요하죠.
Meta 문서에 따르면 long-lived token(최대 60일 유효)을 발급받을 수 있지만, 그마저도 주기적으로 갱신해줘야 하는 번거로움이 있습니다.
그래서 우선 1h > 2Month 장기 토큰으로 자 동 갱신하는 과정을 n8n 워크플로우로 자동화해봤습니다.
시리즈 #2에서는 이렇게 발급받은 토큰으로 Threads에 포스팅하는 Workflow를 소개하고,
시리즈 #3에서는 설정한 기간마다 새 토큰을 발급받고, Supabase에 저장하여 이변이 없는 한, 손댈 필요가 없도록 해 보았습니다.
아래 유튜브 영상을 많이 참조하였습니다.
[참조 Youtube : https://www.youtube.com/watch?v=yP0WLHIVtmc]
진행 방법
✅ Facebook & Threads API 준비하기
Meta(FB)의 관리자 UI/UX는 악명이 높기로 유명하죠~! 지면의 제약으로 인해서 위 유튜브 영상을 참조하시어 셋업하시는 것을 추천 드립니다. ^^
Meta for Developers에서 앱 생성 : https://developers.facebook.com/
Threads API 사용을 위해 비즈니스 계정이 꼭 필요~!!!
개인 계정이시면 진행하면서 자연스럽게 전환 가능
영상과 더불어 참조하는 Meta > Threads API 공식 문서
✅ n8n 워크플로우 구성
아래는 위 영상을 통해서 찾은 1h 시간 제한 Threads Token을 2Month 장기로 전환하는 플로우입니다.
1. When clicking 'Execute workflow (Manual Trigger)
테스트용 수동 실행 트리거입니다.
실제 자동화에서는 Schedule Trigger로 대체 가능합니다.
2. 장기 토큰 셋팅 (Set Node)
환경변수 형태로 토큰 발급에 필요한 값들을 미리 지정해줍니다.
유튜브 영상을 보면서 찾은 1h 사용 가능한 token과 개인 비번(secret)을 넣어 줍니다.
3. 장기 토큰 변환 (HTTP Request Node)
Threads용 long-lived token을 요청하는 핵심 노드입니다.
응답 결과로 새로운 장기 토큰이 반환됩니다.
4. Create a row (Supabase Node)
Supabase 테이블(
Thread Token)에 새로운 토큰을 저장합니다.함께 저장되는 정보:
access_tokenactive: truetoken_type: Newcreated_at: 현재 시간
이후 다른 워크플로우(n8n-Threads 포스팅 등)에서 이 테이블에서 최신 토큰을 가져다 쓸 수 있습니다.
[장기 Token 보관]
Supabase에 보관하기
저는 아래와 같은 컬럼값들을 생성해서 테이블을 만들었습니다.
결과와 배운 점
💡 깨달음
Meta 플랫폼의 관리자 화면 UI/UX는 역시 그지 같았습니다. (아무리 경험해도 익숙해지지 않는... 직관성이란 해왕성 너머 안드로메다 어디 즈음에 있는 듯한...)
Access Token 발급 시 CURL 임포트를 이용하면 훨씬 빠르고 정확하게 구성 가능했습니다.
Supabase는 단순 텍스트 저장소로 활용해도 매우 유용했어요.
⚠ 시행착오
액세스 토큰이 1시간짜리일 때 장기 토큰 요청이 실패하는 경우가 있었는데, 이유는 단기 토큰이 만료된 상태로 요청해서였어요.
제가 미숙해서 설정하고, 워크플로우 그리는데 몇 시간이 소요된 관계로 중간중간 계속 단기 토큰의 만기가 도래했던 거죠...ㅠㅠ
Bad Request - Session key invalid오류 메시지를 보고, 토큰 상태부터 점검하는 습관을 들이게 됐습니다.사실, 그래서 장기 전환 workflow를 먼저 소개해 드리는 이유이기도 합니다.
🚀 다음 계획
#2: Supabase에 저장된 토큰을 가져와 실시간 포스팅 워크플로우
#3: 장기 토큰 자동 연장 워크플로우