X(旧Twitter) API使用完全ガイド！初心者でもわかる設定からエラー対処法まで

## はじめに 

X(旧Twitter) APIにアクセスするには、まず[開発者アカウント](https://twitterapi.apidog.io/)を申請し、適切なプランを選択する必要があります。承認後、APIにアクセスできるようになります。
X(旧Twitter) APIのオンラインアドレスは：https://twitterapi.apidog.io/ で、このプロジェクトを[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2qiita2&utm_content=TwitterAPI)にクローンしてデバッグに活用できます。以下では、X(旧Twitter) APIの使用方法について詳しく説明します。

## X(旧Twitter) API使用の基本ステップ

X(旧Twitter) APIを使用するための基本ステップは以下の通りです：

1. **X(旧Twitter)開発者アカウントの作成**：[X(旧Twitter)開発者サイト](https://developer.twitter.com/)にアクセスし、「Apply」ボタンをクリックして開発者アカウントを登録・作成します。
2. **アプリケーションの作成**：開発者アカウントで新しいアプリケーションを作成します。「Projects & Apps」ページの「Create App」ボタンをクリックし、アプリケーションの名前、説明、Webサイトなどの情報を入力します（通常は、デフォルトのアプリケーションが作成されています）。
3. **APIキーとアクセストークンの生成**：アプリケーションページで「Keys and tokens」タブをクリックし、「Generate」ボタンをクリックしてAPIキーとアクセストークンを生成します。
4. **X(旧Twitter) APIへのアクセス**：生成したAPIキーとアクセストークンを使用して、アプリケーションからAPIリクエストを送信します。必要に応じて、異なるエンドポイントとパラメータを使用して必要なデータを取得します。
5. **その他の操作**

これがX(旧Twitter) APIを使用するための基本的な手順ですが、具体的な実装は使用するプログラミング言語やライブラリによって異なります。以下では、X(旧Twitter) APIの使用方法について詳しく説明します。

## X(旧Twitter)開発者アカウントの登録

[X(旧Twitter)開発者サイト](https://developer.twitter.com/)にアクセスし、「Apply」ボタンをクリックして開発者アカウントを登録します。ここでは、まず無料アカウントを申請できます：

### X(旧Twitter)APIの種類（※2025年3月時点）
2023年3月末にX(旧Twitter)APIは一部を除いて有料化されました。その後、2024年11月にX(旧Twitter)APIは値上げや仕様変更が実施されました。

1日あたりの上限投稿数に制限はあるものの、「ツイートの自動投稿」などは無料でもご利用可能です。

2024年11月現在のX(旧Twitter)APIの種類は下記となります。

|プラン|料金|特徴|
|:-:|:-:|:-:|
|Free|無料|月間約500件 (1日17件) の投稿<br>2024年11月のAPIの仕様変更により、APIのテストのためのデータの取得が一部可能に。|
|Basic|200ドル/月|月間3,000件 (1ユーザー) の投稿<br>月間15,000件のデータ取得<br>2024年11月に月額料金が100ドルから200ドルに値上げ|
|Pro|5,000ドル/月	|月間30,000件 (1App) の投稿<br>月間1,000,000件のデータ取得|
|Enterprise|要お問合せ|大規模な事業者向け<br>|

ツイートのデータの取得やちょっとした自動化を実現されたい方は「**Basicプラン**」のご利用がおすすめです。

## X(旧Twitter) API Keyの申請方法
![X(旧Twitter) .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/2a7eeecb-860b-410c-ad5d-72d38bae15ad.png)

開発者アカウントの登録が完了すると、デフォルトでアプリケーションが作成されているはずです。このアプリケーションを通じて直接X(旧Twitter) API Keyを申請できます。

アプリケーションページで「Keys and tokens」タブをクリックし、「Generate」ボタンをクリックしてAPIキーとアクセストークンを生成しましょう。
![Twitter-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/7eafbdc9-b40f-40a9-9f2b-00acb3fc3715.png)

X(旧Twitter) API Key（つまりトークン/アクセストークン）が生成されると、以下のような情報が表示されます：
![Twitter-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/7e8e2026-1ba8-44e7-bd9f-28d5031e6eec.png)

> 注: 
> - 「API Key」＆「API Key Secret」（OAuth1.0a利用の場合）
> - 「Client ID」＆「Client Secret」（OAuth2.0利用の場合）

## X(旧Twitter) APIのデバッグ方法

API Key（トークン）が生成されたら、関連するAPIを呼び出すことができます。

### Apidogでのデバッグ方法

以下は[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2qiita2&utm_content=TwitterAPI)でのテスト例です (Web およびクライアントの使用をサポート)。X(旧Twitter) APIプロジェクトを開いてクローンしましょう。

![apidog-web-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/661ef8f4-d47e-432d-993e-eee0cadbdc65.png)

![apidog-d-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/c3ca0b81-c9ea-4c15-abc4-7fb5a40aed5d.png)

先ほど生成したAPI Key（トークン）を環境変数にコピー＆ペーストし、保存します。このAPI Keyはローカルにのみ保存され、チームメンバーを含む他の誰も見ることができません。また、[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2qiita2&utm_content=TwitterAPI)のサーバーにも同期されないので、セキュリティの心配はありません。

![apidog-twitter-apikey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/37818299-df5a-43d3-b954-9081d32d688c.png)

プロジェクト内でリクエストを選択し、「送信」ボタンをクリックすると、関連するレスポンスデータが返されます。
![apidog-t-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/32e5ac43-15e3-47ea-b3a0-af000801c483.png)

### JavaScriptでリクエストを送信する方法

コードを使ってリクエストを送信することもできます。

![apidog-t-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968588/d98250d7-fdd9-4931-927c-13630574f704.png)

[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2qiita2&utm_content=TwitterAPI)で「実際のResponse→JavaScript→Axios」をクリックすると、コードが生成されます。このコードをエディタ（VSCodeなど）にコピーして実行できます。もちろん、Python、Java、PHPなど他の言語も選択可能です。これはあなたのシステムに関連する環境が設定されているかどうかによります。

VSCodeで新しいJSファイルを作成し、必要なパッケージ（npm install axios）をインストールして、（node xxx.js）で実行するだけでリクエストを送信できます。

X(旧Twitter)の他のAPIにアクセスする場合も同様の方法です。一般的には、まずトークン認証情報と関連パラメータを取得し、リクエストを送信して、レスポンスデータを受け取ります。

## X(旧Twitter)APIの設定時によくある疑問・エラーQ&A

### Q：ツールのメニューを実行すると、下記のようなToo Many Requestsのエラーが発生します。どうすれば解決できますか？

```
発生するエラー詳細:
{"title":"Too Many Requests","detail":"Too Many Requests","type":"about:blank","status":429}
```

#### このエラーへの対応策
**原因はX(旧Twitter)APIへのリクエストの数が多いことが原因です**。ツールマニュアルにて上限実行数を確認の上、下記の対応をご検討ください。

- 定期実行（自動実行）を停止して手動実行に切り替える
- 時間をあけてメニューを実行する

※上記でも解決できない場合は、X(旧Twitter)APIの有料プランの加入が必須のツールを無料プランで利用しようとしていることが原因です。X(旧Twitter)APIの有料プランにご加入ください。

### Q：ツールのメニューを実行すると、下記のようなError starting OAuth flowのエラーが発生します。どうすれば解決できますか？

```
発生するエラー詳細:
Error starting OAuth flow: <?xml version='1.0′ encoding='UTF-8′?><errors><error code="415″>Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings</error></errors>
```

こちらのエラーは、X(旧Twitter)APIの設定のうち、「Callback URI / Redirect URL」が設定されていないことが原因と思われます。

このエラーを解消するためには、本記事の「Client ID、Client Secretの取得・確認手順（OAuth2.0利用の場合）」のセクションのうちSTEP4の「Callback URI / Redirect URL」の設定方法の部分をご確認いただき、設定をお願いいたします。

その後、下記の手順をお試しください。

- 「アカウント認証クリア」の実行
- 「アカウント認証」の実行
- 実行したいメニューをクリック

### Q：ツールのメニューを実行すると、下記のようなClient Forbiddenのエラーが発生します。どうすれば解決できますか？

```
発生するエラー詳細:
{"client_id":"xxxxxxxx","detail":"When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.","registration_url":"https://developer.twitter.com/en/docs/projects/overview","title":"Client Forbidden","required_enrollment":"Standard Basic","reason":"client-not-enrolled","type":"https://api.twitter.com/2/problems/client-forbidden"}
```

こちらのエラーは**X(旧Twitter)APIの設定が誤っていることが主な要因**です。

具体的には、X(旧Twitter)API設定のプロセスにおいて、作成いただいた「app」がprojectに属さないstand alone形式のものになっている模様です。（stand alone形式で設定してしまうと、エラーが発生してしまうようになっております）

下記手順に従って再度X(旧Twitter)APIの再設定およびkey、secretの取得をいただき、GASラボのツールに貼り付けをし直してください。

1. 本ツールのメニューより「アカウント認証をクリア」を実行
2. X(旧Twitter)[デベロッパーポータル](https://developer.twitter.com/ja)より、以前作成したappを削除
3. projectに所属するappを新規作成してkey、secretの取得
4. 取得したkey、secretを本ツールの設定シートに貼り付け