雑記まみむメモ

雑記、メモ、技法、話題の騒動などを紹介します。

Twitter OAuth認証について

Twitter OAuth認証について

参考資料

とっても簡単!TwitterのOauth認証

Twitter REST APIの使い方

Developer Twitter にてサイト情報などの設定

developer.twitter

  • 右上の「Create an app」よりアプリを作成
    • App name:アプリ名
    • Application description:アプリ詳細
    • Website URL:サイトURL
    • Callback URLs:コールバックURL
  • 「Keys and tokens」タブよりキー情報を取得
    • Consumer API keys
      • API key
      • secret key

request_token

POST https://api.twitter.com/oauth/request_token

リクエストパラメータ

header key value
oauth_callback [コールバックURL]
oauth_consumer_key [API key]
oauth_nonce [任意で用意したランダムな文字列]
oauth_timestamp [UNIX TIMESTAMPの値]
oauth_version 1.0
oauth_signature_method HMAC-SHA1
oauth_signature [作成した署名を指定]

リクエストサンプル

curl \
-X POST \
-H "Authorization: OAuth oauth_callback=https%3A%2F%2Fhogehoge.com%2Foauth%2Ftwitter%2Fcallback.php,oauth_consumer_key=drWFRzMWEau4nNYpyRe8XyMFZ,oauth_nonce=0.72398500%25201567388947,oauth_signature_method=HMAC-SHA1,oauth_timestamp=1567388947,oauth_version=1.0,oauth_signature=kSiZZ%2Fq0D4E0upmC1bjNjxXGNns%3D" \
https://api.twitter.com/oauth/request_token

レスポンスボディ

param key value
oauth_token [リクエストークン]
oauth_token_secret [リクエストークンシークレット]
oauth_callback_confirmed true

レスポンスサンプル

oauth_token=Z5rhnQAAAAAA_zSZAAABbO-mJ2I&oauth_token_secret=o1tTJyKl8vmI4SI98BMSGwCElyJnA3qH&oauth_callback_confirmed=true

OAuth認証

GET https://api.twitter.com/oauth/authorize

リクエストパラメータ

key value
oauth_token [リクエストークン]

リクエストサンプル

# ブラウザで開く
https://api.twitter.com/oauth/authorize?oauth_token=uP0mkAAAAAAA_zSZAAABbO-qrDk

OAuth認証 callback

GET https://hogehoge.com/oauth/twitter/callback.php?oauth_token=1UZAWwAAAAAA_zSZAAABbOHBEh4&oauth_verifier=DLJ4s15BcVMvc3UMIGmXBE46asmfRs25

レスポンスボディ

param key value
state google_adwords
oauth_token [Authorization Code]
oauth_verifier [URLに付けているパラメータのoauth_verifierの値]

レスポンスサンプル

「連携アプリを認証」をクリックした場合

{
    "oauth_token": "Z5rhnQAAAAAA_zSZAAABbO-mJ2I",
    "oauth_verifier": "bEOGBRRpdnIsHRhhp4o70CbEsfvCFV5c"
}

「キャンセル」をクリックした場合

{
    "denied": "MG78eQAAAAAA_zSZAAABbOHJBPI"
}

access_token取得

POST https://api.twitter.com/oauth/access_token

リクエストパラメータ

header key value
oauth_token [Authorization Code]
oauth_consumer_key [API key]
oauth_verifier [URLに付けているパラメータのoauth_verifierの値]
oauth_nonce [任意で用意したランダムな文字列]
oauth_timestamp [UNIX TIMESTAMPの値]
oauth_version 1.0
oauth_signature_method HMAC-SHA1
oauth_signature [作成した署名を指定]

リクエストサンプル

curl \
-X POST \
-H "Authorization: OAuth oauth_consumer_key=drWFRzMWEau4nNYpyRe8XyMFZ,oauth_nonce=0.83296100%201567395036,oauth_signature_method=HMAC-SHA1,oauth_timestamp=1567395036,oauth_token=I4F8gQAAAAAA_zSZAAABbPAGF9E,oauth_verifier=zFlLLCY56m3OtIYpp8VvOGLMSET2w7xu,oauth_version=1.0,oauth_signature=z/gpaAhdsQjjBR0fugQ5n5+FC+4=" \
-k https://api.twitter.com/oauth/access_token

レスポンスボディ

param key value
oauth_token [アクセストークン]
oauth_token_secret [リフレッシュトークン]
user_id [ユーザID]
screen_name [ユーザ名]

レスポンスサンプル

oauth_token=6253282-eWudHldSbIaelX7swmsiHImEL4KinwaGloHANdrY&oauth_token_secret=2EEfA6BG3ly3sR3RjE0IBSnlQu4ZrUzPiYKmrkVU&user_id=6253282&screen_name=twitterapi