Skip to main content

Posts

Showing posts from March, 2022

Twitter APIをcurlで呼び出す場合のSignatureの生成

学習の一環として、Twitter APIを既存のライブラリなどを使用せずにLow Level(curlなど)で呼び出して実行していた。 このときに些細な点で1-2時間ほど時間を溶かしてしまったので記録しておく。 先に3行でまとめておくと CLIなどコマンドベースでTwitterの認証トークンを使用する場合はPIN Based OAuthを使う 取得したKeyやTokenを使用する場合にはSignatureと呼ばれる、データの完全性を保証するためのHMAC-SHA1形式の暗号データを作る必要がある これをコマンドで作る場合には echo -n "value" | openssl dgst -sha1 -binary -hmac "key" | base64 のようにする 使用するAPIとドキュメント 基本的には公式ドキュメントを読めばできる、とまでは言えないが、できるちょっと手前まではそれなりにしっかり書いてあった。 今回主として見る必要があったのは次の4つ。PINベースの認証の中で後の3つのAPIをそれぞれ呼ぶ。 PIN-Based OAuth developer.twitter.com POST oauth/request_token developer.twitter.com GET oauth/authorize developer.twitter.com POST oauth/access_token developer.twitter.com アクセストークンを取得するまでのつまづきポイント 少しつまづいたのはcurlでのURLの記載方法。 call_backにoobを記載すれば次のステップの時にリダイレクトされない、と書かれていたのだけれど、実際にはリダイレクトされてしまって困った。 最終的には、URLを""で囲むことで正しく処理されたのだけど、そこは正しく解釈されるだろうと思い込んでしまっていたのが盲点だった。 curl --request POST \ --header "Authorization: Bearer AAAAAAAAxxxxxxxx" \ --url "https://api.twitter.com/oauth/request_token?oa