사용자 게시물 및 멘션 타임라인 엔드포인트 시작하기
이 빠른 시작 가이드는 Postman을 사용하여 지정한 필드와 함께 사용자 게시물 타임라인 엔드포인트로 첫 요청을 보내는 방법을 안내합니다.
다양한 언어의 샘플 코드를 보고 싶다면 X API v2 샘플 코드 GitHub 리포지토리를 방문하세요.
사전 준비 사항이 가이드를 완료하려면 요청을 인증하기 위한 키와 토큰 세트가 필요합니다. 다음 단계에 따라 이러한 키와 토큰을 생성할 수 있습니다:
- 개발자 계정에 가입하고 승인을 받습니다.
- 개발자 포털에서 Project와 연결된 Developer 앱을 생성합니다.
- App의 “Keys and tokens” 페이지로 이동하여 필요한 자격 증명을 생성합니다. 모든 자격 증명은 안전한 위치에 저장하세요.
타임라인 요청을 빌드하는 단계
이 예에서는 ID로 사용자 게시물 타임라인 엔드포인트에 요청을 보내지만, 이 빠른 시작에서 배운 내용을 사용자 멘션 타임라인 요청에도 적용할 수 있습니다.
1단계: 도구 또는 라이브러리 선택
이 엔드포인트에 요청을 보내는 데 사용할 수 있는 다양한 도구, 코드 예제, 라이브러리가 있지만, 여기서는 과정을 단순화하기 위해 Postman을 사용하겠습니다.
X API v2 Postman 컬렉션을 환경에 로드하려면 다음 버튼을 클릭하세요:
Postman에 X API v2 컬렉션을 로드한 후, timeline 폴더로 이동하여 “User Post timeline by ID” 요청을 찾습니다.
2단계: 요청 인증
X API에 올바르게 요청하려면 권한이 있는지 확인해야 합니다. 이를 위해 이 엔드포인트에서는 OAuth 2.0 App-Only, OAuth 2.0 Authorization Code with PKCE, 또는 OAuth 1.0a 사용자 컨텍스트 인증 방법 중 하나로 요청을 인증해야 합니다.
간단히 하기 위해 이 요청에서는 OAuth 2.0 App-Only를 사용하겠지만, 비공개 지표 또는 게시물을 요청하려면 다른 인증 방법을 사용해야 합니다.
키와 토큰, 특히 App Access Token (App-only Bearer Token이라고도 함)을 Postman에 추가해야 합니다. Postman 오른쪽 상단에서 “X API v2” 환경을 선택한 뒤, 환경 드롭다운 옆의 눈 아이콘을 클릭하여 “initial value”와 “current value” 필드에 키와 토큰을 입력하세요.
이 변수가 올바르게 설정되면 요청의 Authorization 탭에 자동으로 반영됩니다.
3단계: 게시물을 가져올 사용자를 식별하고 지정
요청에서 최근 게시물을 가져올 사용자를 지정해야 합니다. 이 예에서는 단일 사용자 ID를 전달합니다.
사용자 ID는 계정 프로필 URL에서 확인할 수 있는 계정 핸들을 나타내는 숫자 값입니다. 예를 들어, 다음 계정의 사용자 이름은 XDevelopers입니다.
https://x.com/XDevelopers
이 사용자 이름을 사용자 ID로 변환하려면 사용자 이름을 사용해 users lookup 엔드포인트를 호출하고 페이로드에서 숫자 사용자 ID를 확인하세요. @XDevelopers의 경우 사용자 ID는 2244994945입니다.
Postman에서 “Params” 탭으로 이동하여 id 파라미터의 “Value” 열에 이 사용자 ID를 입력합니다.
4단계: 가져올 필드를 식별하고 지정
3단계를 마친 뒤 “Send” 버튼을 클릭하면 응답에 기본 Post object 필드인 id와 text가 반환됩니다.
id와 text 외의 추가 필드를 받으려면, 요청에 field 및/또는 expansion 매개변수를 사용하여 해당 필드를 지정해야 합니다.
이번 연습에서는 서로 다른 객체에서 다음의 세 가지 추가 필드 세트를 요청합니다:
- 기본 사용자 객체에서 추가 tweet.created_at 필드
- 반환된 게시물의 작성자(User) 객체 기본 필드: id, name, username
- 연관된 사용자 객체에서 추가 user.created_at 필드
Postman에서 “Params” 탭으로 이동하여 “Query Params” 표에 다음 key:value 쌍을 추가하세요:
| | |
|---|
| Key | Value | Returned fields |
tweet.fields | created_at | tweets.created_at |
expansions | author_id | includes.users.id, includes.users.name, includes.users.username |
user.fields | created_at | includes.users.created_at |
| max_results | 5 | |
이제 “Send” 버튼 옆에 다음 URL이 표시됩니다:
https://api.x.com/2/users/:id/tweets?tweet.fields=created_at&expansions=author_id&user.fields=created_at&max_results=5
유의 사항:Postman에서는 URL 필드의 경로 매개변수 :id가 id params 필드에 입력한 값으로 자동으로 업데이트되지 않으므로, 위 URL에는 2244994945가 아니라 :id가 포함되어 있습니다.
5단계: 요청을 보내고 응답을 확인하세요
모든 설정을 마쳤다면 “Send” 버튼을 눌러 다음과 같은 응답을 받게 됩니다:
"data": [
{
"author_id": "2244994945",
"created_at": "2020-09-03T17:31:39.000Z",
"id": "1301573587187331074",
"text": "오늘부터 개발자 포털에서 v2 API의 월간 트윗 사용량을 확인할 수 있습니다. ✨📊\n\n이는 필터된 스트림과 최신 검색에서 수신한 트윗 수를 집계합니다. 자세히 알아보기: https://t.co/nfJkFRQcZ https://t.co/vFXmoj3qaA"
},
{
"author_id": "2244994945",
"created_at": "2020-09-03T15:43:00.000Z",
"id": "1301546240887398401",
"text": "RT @snowman: 우리는 Python, Flask, Postgres, Heroku로 X API를 사용해 실시간 골프 리더보드를 만들었습니다.\n\n'leaderboard'를 다이렉트 메시지로 보내세요…"
},
{
"author_id": "2244994945",
"created_at": "2020-09-01T20:07:50.000Z",
"id": "1300888112948752389",
"text": "⛳ 골퍼들이 왜 셔츠를 하나 더 가지고 다닐까요? 혹시 홀인원을 할지도 모르니까요.\n\n이제 관심이 생기셨다면, @snowman과 @johnd가 #TwitterAPI로 실시간 골프 리더보드를 어떻게 구축했는지 알아보세요. 📖\n\nhttps://t.co/rRKeKmaRrN"
},
{
"author_id": "2244994945",
"created_at": "2020-08-28T23:14:22.000Z",
"id": "1299485505478963200",
"text": "RT @jessicagarson: @ThePracticalDev에 Twitter API v2 사용법에 관한 첫 튜토리얼을 올렸습니다! 사용자의 트윗을 탐색하는 방법을 배우게 될 거예요…"
},
{
"author_id": "2244994945",
"created_at": "2020-08-21T19:10:05.000Z",
"id": "1296887316556980230",
"text": "@PennMedCDH가 Twitter 데이터를 활용해 COVID-19 보건 위기를 이해하는 방법을 확인해 보세요 📊\n\nhttps://t.co/1tdA8uDWes"
}
],
"includes": {
"users": [
{
"created_at": "2013-12-14T04:35:55.000Z",
"id": "2244994945",
"name": "Twitter Dev"
"username": "TwitterDev"
}
]
},
"meta": {
"newest_id": "1301573587187331074",
"next_token": "t3buvdr5pujq9g7bggsnf3ep2ha28",
"oldest_id": "1296887316556980230",
"previous_token": "t3equkmcd2zffvags2nkj0nhlrn78",
"result_count": 5
}
}
6단계: 결과 페이지네이션
이전 응답의 하단에는 다음 필드를 포함하는 metadata 객체가 있습니다:
- oldest_id
- newest_id
- results_count
- next_token
- previous_token
4단계에서 max_results 값을 5로 지정했으므로 각 페이지에는 최대 5개의 결과만 포함됩니다. 추가 페이지의 데이터를 조회하려면 마지막 결과에서 next_token 필드 값을 가져와 해당 문자열을 Postman params 페이지의 pagination_token 매개변수 값으로 설정하고, 나머지 항목은 그대로 유지합니다.
| |
|---|
| Key | Value |
pagination_token | t3buvdr5pujq9g7bggsnf3ep2ha28 |
모든 설정을 마친 뒤 다시 “Send”를 클릭하면 다음 페이지의 결과를 받을 수 있습니다.
이 개념을 자세히 설명하는 페이지네이션 가이드를 제공합니다.
다음 단계
API Reference를 사용해 요청 사용자 지정하기
커뮤니티에 문의하여 도움받기