OAuth認証では、リクエストトークンを使うなんてことはRFCの規定に書いていないので、なんじゃこりゃっとなった。
よくわからないので、「リクエストトークン」でいろいろググってみても、全然見つからなかった。出てくるのは基本ツイッターのOAuthに関することだけ。
なので、OAuth認証についていろいろ調べていく過程で、理解できたことをまとめる。
— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
ツイッターはOAuth1.0を利用していた
結論から言うと、RFCの規約で僕が読んでいたのは、OAuth2.0の記述で、ツイッターはOAuth1.0にのっとってAPIが作られているらしい。
OAuth2.0の通信規約の詳しい説明はほかページに譲るとして、OAuth2.0ではリクエストトークンを利用した認可を利用しないようだ。(下記ツイートで、OAuth2.0と1.0の違いを説明しているページが存在するので、そちらを参照)
ツイッターのAPIは、OAuth1.0を利用しているようで、OAuth1.0だと、リクエストトークンを利用した認可を行うようだ。ちなみにOAuth1.0を利用したOAuth Providerはツイッターぐらいだそうで。(FacebookなどはOAuth2.0)
OAuth1.0のRFC文書を確認したところ、ちゃんとリクエストトークンの名が存在した。
https://tools.ietf.org/html/rfc5849
ということで、TwitterのOAuth認証は、OAuth1.0の情報をキャッチアップしながら実装するとよい。
#OAuth— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
なんかツイッターのOAuth認証、若干RFCの基準と違う気がする。
リクエストトークンなんて概念しないし、本来必要な認可grantの取得もしてない。ってことは、結構独自のデータのとり方をしているのかな。
— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
#OAuth— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
書いてあった。ツイッターはOAuth1.0の仕組みを使っているので、リクエストトークンが必要なよう。https://t.co/lmLAXXyTLC pic.twitter.com/E6GSDclgKf
#OAuth— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
OAuth1.0を使っているOAuth Providerって、基本ツイッターぐらいなんだ。https://t.co/lkzavJjjvs
だからリクエストトークンを必要としてたわけな。 pic.twitter.com/1BFuVp0ORV
#OAuth— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018
OAuth1.0とOAuth2.0の通信の違い
OAuth1.0では、アクセストークン取得のためにリクエストトークンを利用していたが、OAuth2.0からは認可コードを取得する方針に変わった。https://t.co/jQWocN1arj pic.twitter.com/EhR6nsjcOg
— Dai Kawai@RubyPython (@never_be_a_pm) January 20, 2018