blueです。
今回X(旧Twitter)でOAuth(オーオウス)2.0を使って自動投稿できるようにしました。ただ今一つOAuth2.0について理解していなかったので自分なりにまとめました。
一般的な説明からXで使用しているKeyやトークンの説明もしているので参考になれば幸いです。
OAuthの仕組みをわかりやすく解説した動画です。実際の認可画面の紹介やハンズオンも含まれており、具体的な操作を学べます。この動画を見ることで、OAuthの基本だけでなく、Googleとの連携方法も理解できます。

技術者ではない方にOAuthを説明されてきた方の記事です。APIの基礎から、認可サーバーの説明もしてくださっています。この記事を読むとAPIを守る技術である「OAuth2.0」の概念がとてもよくわかるようになります。

OAuth2.0に関してわかりやすく、また詳しく書かれている書籍です。シリーズでいくつか本も出されているようです。私はまだ購入していませんがGoogleでのハンズオンをされているようなのでGoogle APIを使うタイミングになったら購入しようと思います。
認証と認可の違いを理解する
OAuth 2.0 を理解するためには、まず「認証」と「認可」を理解する必要があります。
概念 | 意味 | 例 |
---|---|---|
認証(Authentication) | ユーザーが本人であることを確認するプロセス | Web サイトのログイン画面 |
認可(Authorization) | 認証されたクライアントにリソースへのアクセス権限を与えるプロセス | Twitter の OAuth 認証画面で「ツイートを読む」許可を与える |
図で表すと以下のようになります。

「認証」はユーザー自体がアクセスすること、「認可」はユーザーがクライアントアプリにアクセス権利を与えることになります。
難しそうに感じますが、実際に目にする画面を基にすると、わかりやすいと思います。
左が「認証」、右が「認可」になります。簡単に言うと「認証」は自分自身でアクセス、「認可」は自分のアプリにアクセス権を与えるイメージと考えてもらえばよいです。

認可サーバーやリソースサーバーについては後で説明します。
API Key 認証と OAuth認証の違いを理解する
他のアプリにアクセスする方法であればAPI Keyによる方法もあるじゃないかと思うかもしれません。
ただこの2つでは取得できる情報が異なっています。
比較項目 | OAuth 認証 | API Key 認証 |
用途 | ユーザーごとのデータ取得 | アプリごとのデータ取得 |
セキュリティ | 高い(アクセストークン+リフレッシュトークン) | 低い(API Key が漏れると全 API にアクセス可能) |
使う場面 | SNS やクラウドサービス | 天気 API、翻訳 API など |
API Keyで取得できる情報はユーザーごとによらない公的なものになります。天気情報などはアクセスするユーザーの情報は入っていません。
一方OAuthで取得できる情報はユーザーごとの情報です。Xでいうとツイート情報やアカウント情報です。
実際OAuthを使用しているサービスの例は以下のようなものがあります。SNSやクラウドサービスが並んでいることがわかります。
サービス | 使用目的 |
---|---|
Google API | Google アカウントでログイン、Google Drive アクセス |
Facebook API | Facebook アカウントでログイン、投稿の管理 |
GitHub API | GitHub のリポジトリ管理、ユーザー認証 |
Microsoft Graph API | Microsoft 365 のデータ管理(Outlook、OneDrive など) |
Spotify API | ユーザーの音楽再生情報取得、プレイリスト管理 |
これらのサービスでは、OAuth 2.0 を使って安全にデータへアクセスし、ユーザーの権限を管理しています。
OAuth 2.0 の基本フローを理解する
OAuth 2.0 の認証フローは以下のようになります。

まずは 4 つの登場人物から説明します。
- ユーザー・・・データの所有者、つまりあなたです。自分のアプリにアクセスする権限があります。
- クライアントアプリ・・・ユーザーのデータを利用するアプリです。これはXではなく、第三者のアプリです。このアプリからXにアクセスするときにOAuthが関係してきます。
- 認可サーバー・・・認証とアクセストークンの発行を担当するサーバーです。Xではhttps://twitter.com/i/oauth2/authorizeになっています
- リソースサーバー・・・実際にデータを保持しているAPIです。ツイートを管理している場所はhttps://api.twitter.com/2/tweetsになります。
フローの説明は以下になります。
ステップ | 説明 |
---|---|
1 認可コードリクエスト | クライアントアプリが認可サーバーに「ユーザーのデータを使いたい」とリクエスト+リダイレクトURLを添付 |
2 認可リクエスト | 認可サーバーがユーザーに「アクセスを許可してよいか?」とリクエスト |
3 ユーザーが認可 | ユーザーが「このアプリに許可する」と承認 |
4 認可コード発行 | 認可サーバーが リダイレクトURLに認可コードを付けてリダイレクト。クライアントアプリが受け取る |
5 アクセストークンをリクエスト | クライアントアプリが認可コードを使ってアクセストークンをリクエスト |
6 アクセストークン発行 | アクセストークン(API用)とリフレッシュトークン(更新用)を発行 |
7 APIリクエスト | アクセストークンを使ってAPIにリクエスト |
8 アクセストークンの期限切れ | リフレッシュトークンを使って新しいアクセストークンを取得 |
この①、④、⑤、⑥がOAuthの仕組みになります。
X API で OAuth 2.0 による投稿が可能に
以前の X API では、OAuth 2.0 は読み取り専用(tweet.read
など)に限定されていました。
しかし、TwitterがOAuth 2.0にPKCE(Proof Key for Code Exchange)を追加し、ツイートの自動投稿などの書き込み(write)が可能になりました。
詳細は、Twitterの公式開発者ブログの以下の記事などで確認できます。
Twitter Developer Blog: Announcing OAuth 2.0 Authorization Code with PKCE

X API を利用した OAuth 2.0 のフロー
XでのOAuth 2.0 の認証フローは以下のようになります。

テーブルにまとめると以下のようになります。
ステップ | 説明 | 使用する Key/トークン |
---|---|---|
1 認可コードリクエスト | クライアントアプリが認可サーバーに「ユーザーのデータを使いたい」とリクエスト。リダイレクト URL を添付 | クライアント ID, リダイレクト URL |
2 認可リクエスト | 認可サーバーがユーザーに「アクセスを許可してよいか?」とリクエスト | なし |
3 ユーザーが認可 | ユーザーが「このアプリに許可する」と承認 | なし |
4 認可コード発行 | 認可サーバーがリダイレクト URL に認可コードを付けてリダイレクト。クライアントアプリが受け取る | 認可コード |
5 アクセストークンをリクエスト | クライアントアプリが認可コードを使ってアクセストークンをリクエスト | 認可コード, クライアントID, クライアントシークレット |
6 アクセストークン発行 | アクセストークンとリフレッシュトークン(更新用)を発行 | アクセストークン, リフレッシュトークン |
7 API リクエスト | アクセストークンを使って X API にリクエスト | アクセストークン |
8 アクセストークンの期限切れ | リフレッシュトークンを使って新しいアクセストークンを取得 | リフレッシュトークン |
流れをまとめると
- OAuth2.0では認可コード発行→アクセストークン発行→APIアクセスの流れになる
- クライアントアプリはアクセストークンを得て初めてAPIにアクセスできるようになる
- アクセストークンの期限が切れたらリフレッシュトークンを使うことで更新ができる
になります。
まとめ
今回OAuth2.0に関する記事を書きました。OAuth2.0についてまとめると
- ユーザー情報へのアクセスはAPIだけではなくOAuthの理解が必要
- OAuth2.0ではクライアントアプリが認可コード、アクセストークンを取得している
- X APIではOAuth2.0にPKCEを追加することでread, write対応可能としている
OAuthの理解に少しでも役に立つと幸いです。
APIを理解できると自分で作るアプリに組み込むことができます。
さらに生成AIのAPIと組み合わせることで無限大の可能性が広がります。
私の書いている書籍なども参考ください。
コメント