메인 콘텐츠로 건너뛰기

사용자 게시물 및 멘션 타임라인 엔드포인트 시작하기

이 빠른 시작 가이드는 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를 입력합니다.
KeyValue
id2244994945
4단계: 가져올 필드를 식별하고 지정 3단계를 마친 뒤 “Send” 버튼을 클릭하면 응답에 기본 Post object 필드인 id와 text가 반환됩니다. id와 text 외의 추가 필드를 받으려면, 요청에 field 및/또는 expansion 매개변수를 사용하여 해당 필드를 지정해야 합니다. 이번 연습에서는 서로 다른 객체에서 다음의 세 가지 추가 필드 세트를 요청합니다:
  1. 기본 사용자 객체에서 추가 tweet.created_at 필드
  2. 반환된 게시물의 작성자(User) 객체 기본 필드: id, name, username
  3. 연관된 사용자 객체에서 추가 user.created_at 필드
Postman에서 “Params” 탭으로 이동하여 “Query Params” 표에 다음 key:value 쌍을 추가하세요:
KeyValueReturned fields
tweet.fieldscreated_attweets.created_at
expansionsauthor_idincludes.users.id, includes.users.name, includes.users.username
user.fieldscreated_atincludes.users.created_at
max_results5
이제 “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 매개변수 값으로 설정하고, 나머지 항목은 그대로 유지합니다. 
KeyValue
pagination_tokent3buvdr5pujq9g7bggsnf3ep2ha28
모든 설정을 마친 뒤 다시 “Send”를 클릭하면 다음 페이지의 결과를 받을 수 있습니다.  이 개념을 자세히 설명하는 페이지네이션 가이드를 제공합니다.  다음 단계 API Reference를 사용해 요청 사용자 지정하기 커뮤니티에 문의하여 도움받기