「X」の版間の差分
Gnusocialjp (トーク | 投稿記録) (Service) |
Gnusocialjp (トーク | 投稿記録) (API Authentication OAuth 1.0a) |
||
13行目: | 13行目: | ||
特に、Nitterは主要なメディアでの報道がないものの、潜在的なユーザーが多いようで、アクセスが多かった。 | 特に、Nitterは主要なメディアでの報道がないものの、潜在的なユーザーが多いようで、アクセスが多かった。 | ||
== API == | |||
=== Authentication === | |||
Ref: [https://developer.twitter.com/ja/docs/basics/authentication/overview/oauth OAuth with the Twitter API | Docs | Twitter Developer Platform]. | |||
Twitter APIを使う場合、まず認証が必要になる。OAuth 2.0ベースだが、いくつか方式がある。 | |||
# Application-only authentication: OAuth2 (bearer token): アプリで認証するケース。 | |||
# Application-user authentication: OAuth 1a (access token for user context): ユーザーで認証するケース。3-legged-OAuthを使用。 | |||
1番目は全体で共有する感じ。単独アプリなどで使う。レート制限などを緩和するために、サーバーアプリで、登録ユーザー別に、認証したいなら後者を使ったほうがいい。 | |||
==== OAuth 1.0a ==== | |||
Ref: [https://developer.twitter.com/en/docs/authentication/oauth-1-0a OAuth 1.0a | Docs | Twitter Developer Platform]. | |||
以下の情報を使う。 | |||
* oauth_consumer_key/secret: アプリの認証情報。アクセストークンの取得に使用。API Key、アプリキーなどとも呼ばれる。 | |||
* oauth_token/secret: アクセストークン。ユーザーが自分のアカウントにAPI経由でのアクセスに使用。実質的なパスワード。 | |||
consumer_key/secretは、開発者がX Developer Platformから事前に発行して取得しておく必要がある。oauth_token/secretは実装後にユーザーがアプリ操作で取得する感じになる。 | |||
アクセストークンを実際に取得する際のリクエストは以下のようなイメージ。 | |||
curl --request POST \ | |||
--url '<nowiki>https://api.twitter.com/1.1/statuses/update.json?status=Hello%20world'</nowiki> \ | |||
--header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \ | |||
===== API Key and Secret ===== | |||
Ref: [https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret API Key and Secret | Docs | Twitter Developer Platform]. | |||
Consumer Key/Secretを取得する。開発者アカウントにログインして、アプリのプロジェクトを作成すると表示される。これを控えておく。 | |||
===== User Access Tokens (3-legged OAuth flow) ===== | |||
Ref: [https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/obtaining-access-tokens.png.twimg.1920.png User Access Tokens (3-legged OAuth flow) | Docs | Twitter Developer Platform]. | |||
3-legged OAuth flowをに従って、ユーザーにアクセストークンの取得を行える。ここが重要。 | |||
====== 1 POST oauth/request_token ====== | |||
まずコンシューマーキーを使って、アクセストークンを要請する。 | |||
* oauth_callback | |||
* oauth_consumer_key | |||
応答200で以下のパラメーターがボディーにあるので、これを後続の処理で使用する。 | |||
* oauth_token | |||
* oauth_token_secret | |||
* oauth_callback_confirmed | |||
====== 2 GET oauth/authorize ====== | |||
1で取得したoauth_tokenを使って、GETする。 | |||
https://api.twitter.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 | |||
すると、1でoauth_callbackdで指定したURLにリダイレクトされて、URLクエリーにパラメーターがついてくる。 | |||
https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY | |||
====== 3 POST oauth/access_token ====== | |||
最後にアクセストークンを取得する。 | |||
* POST /oauth/access_token | |||
* <code>oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w</code> <code>oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0</code> <code>oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY</code> | |||
応答本体に以下が返ってくる。 | |||
* <code>oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4</code> <code>oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo</code> | |||
以後は上記をリクエストで使う。 |
2024年3月28日 (木) 11:33時点における版
About
旧Twitter。
Link
Service
X/Twitter関係でアクセスの多い役務関係の記事が以下となっている。
- 役務: X/Twitterのデータ一括ダウンロードCLI/GUIツールtwmd (twitter-media-downloader) | GNU social JP Web
- 役務: X/Twitterの匿名閲覧・RSS提供サービスNitterの終了? | GNU social JP Web
特に、Nitterは主要なメディアでの報道がないものの、潜在的なユーザーが多いようで、アクセスが多かった。
API
Authentication
Ref: OAuth with the Twitter API | Docs | Twitter Developer Platform.
Twitter APIを使う場合、まず認証が必要になる。OAuth 2.0ベースだが、いくつか方式がある。
- Application-only authentication: OAuth2 (bearer token): アプリで認証するケース。
- Application-user authentication: OAuth 1a (access token for user context): ユーザーで認証するケース。3-legged-OAuthを使用。
1番目は全体で共有する感じ。単独アプリなどで使う。レート制限などを緩和するために、サーバーアプリで、登録ユーザー別に、認証したいなら後者を使ったほうがいい。
OAuth 1.0a
Ref: OAuth 1.0a | Docs | Twitter Developer Platform.
以下の情報を使う。
- oauth_consumer_key/secret: アプリの認証情報。アクセストークンの取得に使用。API Key、アプリキーなどとも呼ばれる。
- oauth_token/secret: アクセストークン。ユーザーが自分のアカウントにAPI経由でのアクセスに使用。実質的なパスワード。
consumer_key/secretは、開発者がX Developer Platformから事前に発行して取得しておく必要がある。oauth_token/secretは実装後にユーザーがアプリ操作で取得する感じになる。
アクセストークンを実際に取得する際のリクエストは以下のようなイメージ。
curl --request POST \ --url 'https://api.twitter.com/1.1/statuses/update.json?status=Hello%20world' \ --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
API Key and Secret
Ref: API Key and Secret | Docs | Twitter Developer Platform.
Consumer Key/Secretを取得する。開発者アカウントにログインして、アプリのプロジェクトを作成すると表示される。これを控えておく。
User Access Tokens (3-legged OAuth flow)
Ref: User Access Tokens (3-legged OAuth flow) | Docs | Twitter Developer Platform.
3-legged OAuth flowをに従って、ユーザーにアクセストークンの取得を行える。ここが重要。
1 POST oauth/request_token
まずコンシューマーキーを使って、アクセストークンを要請する。
- oauth_callback
- oauth_consumer_key
応答200で以下のパラメーターがボディーにあるので、これを後続の処理で使用する。
- oauth_token
- oauth_token_secret
- oauth_callback_confirmed
2 GET oauth/authorize
1で取得したoauth_tokenを使って、GETする。
https://api.twitter.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
すると、1でoauth_callbackdで指定したURLにリダイレクトされて、URLクエリーにパラメーターがついてくる。
3 POST oauth/access_token
最後にアクセストークンを取得する。
- POST /oauth/access_token
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
応答本体に以下が返ってくる。
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo
以後は上記をリクエストで使う。