DEV Community

kaede
kaede

Posted on

Twitter API Part 1 -- 開発者アカウントを登録してツイートID から ツイート本文、ツイート主の内部ID、ハンドルネームと公開ID を取得する

参考

https://zenn.dev/nekoshita/articles/3c24c302a6a5ee#%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E5%8F%96%E3%82%8A%E6%89%B1%E3%81%84%E3%81%AB%E3%81%AF%E5%8D%81%E5%88%86%E3%81%8A%E6%B0%97%E3%82%92%E3%81%A4%E3%81%91%E3%82%92%EF%BC%81

zenn の nekoshita さんの記事


開発者アカウントの作成

https://developer.twitter.com/

にアクセスして

メールアドレスの登録がされている Twitter アカウントで

  • 利用目的 200 文字
  • Tweet & Retweet & Reply... などの各項目の利用目的 100 文字

これらを記載して Twitter 開発者アカウントを作成する。


Bearer などのトークンの取得とメモ

すると API アプリが作れるようになって、作ると

  • api key
  • api key secret
  • Bearer Token

これらのトークンが入手できるのでメモに控える。

https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1

Bearer Token は HTTP リクエストで必ず使われる担い手 ID 。
どの Twitter API ユーザーがこのリクエストを打ったかの情報だと推測する。


API のリクエストサンプルを確認

アプリを作ってトークンを発行すると、実際に叩いてみるための
サンプルツイートとサンプルリクエストの例の画面に誘導される。

Image description

curl -X GET -H 
"Authorization: Bearer <BEARER TOKEN>"
"https://api.twitter.com/2/tweets/20?expansions=author_id"
Enter fullscreen mode Exit fullscreen mode

これを実際にターミナルで叩いてみろと出る。

管理画面のこのサンプルのように

ヘッダーに Bearer Token を入れて

https://api.twitter.com/2/tweets/{tweetId}
Enter fullscreen mode Exit fullscreen mode

とすると JSON が返ってくるらしい。
author_id は optional 。


ツイートID 20 に実際にリエクエストしてみる

curl -X GET -H "Authorization: Bearer 1234"
"https://api.twitter.com/2/tweets/20?expansions=author_id"
Enter fullscreen mode Exit fullscreen mode

サンプルに出ているツイートID 20 に打つと

{
    "data": {
        "author_id": "12",
        "id": "20",
        "text": "just setting up my twttr"
    },
    "includes": {
        "users": [
            {
                "id": "12",
                "name": "jack",
                "username": "jack"
            }
        ]
    }
}
Enter fullscreen mode Exit fullscreen mode

JSON のデータで

  • author_id (ツイートしたユーザーの内部 ID )
  • id (ツイート ID )
  • text (ツイートの内容)

これらの基礎データと、
expansions=author_id をつけているので
users (そのツイートをしたユーザー) のデータとして

  • id (author_id、内部で扱われているユーザーID)
  • name (Twitter ユーザーが設定しているハンドルネーム)
  • username (Twitter アプリで見える ID)

これらが拡張して取得できているを確認した。


ツイートID 1528083859430330369 にリクエストしてみる

自分でツイートしたツイートの ID を控えてこれにも同じリクエストを打ってみる。

 curl -X GET -H "Authorization: Bearer 1234" "https://api.twitter.com/2/tweets/1528083859430330369?expansions=author_id"
Enter fullscreen mode Exit fullscreen mode

すると

{
    "data": {
        "author_id": "848541381836423170",
        "id": "1528083859430330369",
        "text": "API から取るようのテストツイート"
    },
    "includes": {
        "users": [
            {
                "id": "848541381836423170",
                "name": "カエデ.tsx",
                "username": "kaede_io"
            }
        ]
    }
}
Enter fullscreen mode Exit fullscreen mode

ツイートID 20 同様に取得できた。
これによって

  • 自分の本来の内部ユーザーID
  • ツイート本文を日本語で
  • 自分のハンドルネーム
  • 自分のTwitterで表示されるユーザーId

これらが確認できた。


ベラトークンに<>をつけて入れるとエラーになる

{
  "title": "Unauthorized",
  "type": "about:blank",
  "status": 401,
  "detail": "Unauthorized"
}%  
Enter fullscreen mode Exit fullscreen mode

401 で失敗が返ってくる。


まとめ

ツイートを HTTP GET リクエストで取得するためは

開発者アカウントを登録して開発アプリを取得し、Bearer Token を発行

ツイートID と自分の Bearer Token を使って

curl -X GET -H "Authorization: Bearer {bearer_token}"
https://api.twitter.com/2/tweets/{tweetId}
Enter fullscreen mode Exit fullscreen mode

こうやってリクエストする。

すると JSON で

  • author_id (ツイートしたユーザーの内部 ID )
  • id (ツイート ID )
  • text (ツイートの内容)

これらのツイート情報を表示することができる。


次回

このデータでは一つのツイートの

  • Like (いいね)
  • Retweet
  • Replies (ついているリプライ)

これらのデータが入っていないのでそれを取得したい。

また、今回はツイートID からのリクエストだったので
ユーザーID からのリクエストでツイートリストを取得したい。 

Top comments (0)