자주 묻는 질문(FAQ)

일반

API 클래스에서 HTTP 401 권한 없음(Unauthorized) 오류가 발생하거나, Client 클래스에서 HTTP 403 금지됨(Forbidden) 오류가 발생하는 이유는 뭔가요?

만약 본인이 현재 인증된 사용자로 해당 작업(메서드)을 실행하고 있다면(ex. API.update_status()), 본인의 앱에 쓰기 권한이 있는지 확인하세요.

(쓰기 권한이 없었다면) 쓰기 권한을 부여하고, 새 자격 증명을 사용하여 해당 작업을 재생성하세요.

더 자세한 정보는 트위터 API 문서 - 엡 권한 페이지를 참고하세요.

API 클래스에서 HTTP 403 금지됨(Forbidden) 오류가 발생하는 이유는 뭔가요?

If you have Essential access to the Twitter API, you won’t be able to access Twitter API v1.1. This includes all API methods.

Client 클래스를 이용해 트위터 API v2를 이용하거나, Elevated로의 액세스 권한 상승을 요청해야 해요.

더 자세한 정보는 트위터 API 문서 - 액세스 권한 및 버전 페이지를 참고하세요.

GIF나 동영상을 업로드하려고 하는데 문제가 발생해요. 이유가 뭔가요?

고용량의 GIF를 업로드할 때 HTTP 400 잘못된 요청(Bad Request) 오류가 발생하거나, 영상 파일을 업로드할 때 다른 오류 및 문제가 발생하는 경우, media_category 매개변수를 제대로 설정했는지 확인하세요. (예: tweet_gif 또는 tweet_video)

또한 업로드하려는 영상 파일이 권장 규격에 맞는지도 확인하세요.

더 자세한 정보는 트위터 API 문서 - 미디어 업로드 페이지를 참고하세요.

특정 사용자에 대한 3200개의 트윗이 수신되거나 그렇지 못한 이유는 무엇인가요?

《많은 트래픽이나 고용량의 트래픽을 발생시키는 계정의 경우, 트위터 API가 고도로 분산되어 있으며 일관성이 있음을 유의해야 합니다. 저희는 최신 정보를 제공하기 위해 노력하나, 다른 대규모 시스템과 마찬가지로 예상 밖의 행동을 고용량 트래픽으로 간주할 수 있습니다.》

https://twittercommunity.com/t/inconsistent-tweet-retrieval/150635

tweepy v4

API 클래스의 메서드 중 하나의 위치 인수(Positional argument)를 받는 메서드가 두 개의 위치 인수를 전달해줬을 때 TypeError 를 반환하나요?

This and other similar errors are due to Tweepy v4.0.0 changing API methods to no longer accept arbitrary positional arguments. The 1 positional argument being referred to in the error is self.

이런 매개변수는 키워드 인수(Keyword argument)로 대신 전달될 수 있습니다.

사용 중인 API 클래스 메서드에 대한 tweepy 문서를 참고하세요.

API.me 는 어디로 이동됐나요?

tweepy v4에서 API.me 를 사용하려 하면, APIme 속성을 가지고 있지 않다는 AttributeError 가 반환될 겁니다.

This is because Tweepy v4.0.0 removed API.me.

API.verify_credentials() 를 이 대신 사용할 수 있습니다.

트위터 API v2

API v2에서 Client 클래스를 사용해 필드 데이터를 받지 못하는 이유는 무엇인가요?

If you are simply printing the objects and looking at that output, the string representations of API v2 models/objects only include the default fields that are guaranteed to exist.

The objects themselves still include the relevant data, which you can access as attributes or by subscription.

전체 데이터에 대한 딕셔너리꼴의 데이터를 제공하는, 데이터(data)라는 속성 및 값도 존재합니다.

Paginator 클래스를 포함하고 있는 includes 데이터에 액세스하려면 어떻게 해야 하나요?

Paginator.flatten() 메서드가 data 를 1차원꼴로 단순화해 주고, 이를 각 개체에 대해 반복합니다.

includes 에 액세스하려면, 대신 각 응답에 대해 반복해야 합니다.

Client.search_all_tweets()Paginator 를 같이 사용하는데, 왜 이렇게 트위터 API 제한에 빨리 도달하나요?

Client.search_all_tweets() 가 사용하는 가져오기: /2/tweets/search/all 트위터 API 엔드포인트는 초당 1번의 추가 제한을 갖고 있으며, 이는 Paginator 에 의해 처리되지 않습니다.

time.sleep() 을 이용, 반복 작업 간 지연 시간을 1초로 설정해 API 호출 제한에 도달하지 않도록 할 수 있습니다.