twitterのOAuthについて改めて

2013/11/24 [10:43:06] (日) 天気

perlでtwitterのOAuth認証するまで概略。

(今まで何度か書いたと思って探したら、スゲーテキトーなことしか書いてなかった)

「OAuthとは」てのはわたしもよくわかってない。詳しいサイトがたくさんあるので興味のかたは検索して調べてください。


大雑把に。

ユーザーを識別するのに、IDとパスワードが必要になるんだけど「野良サービスにメールアドレスやパスワードを登録するのはどうなの?」「いろいろなところにIDやパスワードを登録しても忘れちゃうし」ということで不安だし不便。サービスを提供する側としてもユーザーのIDなどを管理するのはリスキー。

そこで、twitterやfacebook、yahoo、mixiなどすでに利用していて信用できそうなサイトにログインしたら、そのまま他のサービスも使えるようにする・twitterなどがユーザーを保証してくれるのがOAuth認証というやつ(言葉はたぶん間違ってる)


ウチの「創作文芸見本誌会場HappyReading」http://books.doncha.net/happy-reading/ で使っている。


1 同人誌の登録ページにログインする

2 twitterのログイン画面に飛ぶ

3 twitterでIDとパスワードを入力する

4 ウチのページに戻ってくる


2のこんな画面は見たことがあると思う。

image

・ユーザーはtwitterのアカウントがあれば、twitterのID・パスワードでウチも使える。

・ウチとしてはユーザーのIDやパスワードを管理しない(知らないまま)なのでリスクが少ない。




準備

https://dev.twitter.com/apps


↑まずはアプリをここで登録をする。

(WEBだったらCGIなどのサービス)


登録するとOAuthに使うパラメータというかトークンが設定されるのでメモ。

・Consumer key

・Consumer secret

・Access token

・Access token secret


以下のURLもメモ。

・Request token URL

 ttps://api.twitter.com/oauth/request_token

・Authorize URL

 ttps://api.twitter.com/oauth/authorize

・Access token URL

 ttps://api.twitter.com/oauth/access_token

・Callback URL

 http://example.com/test.cgi

 (これは自分が登録したWEBサービスなど)



その1

consumer key と consumer secret、callback URLをパラメータに持ってtwitterにトークンを要求する。

ttps://api.twitter.com/oauth/request_token に以下のHEADERをつけてGETでアクセス。


OAuth oauth_callback="http%3A%2F%2Fexample.com%2Ftest.cgi",oauth_consumer_key="ZQWERTYUIOPXXXXXXXXXX",oauth_nonce="%241%241f%24DKEidkeNKHL7fodEGuHDAE",oauth_signature="IdEGUKDIEKDLADnupxwCorOK%2BkE%3D%0A",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1385108107",oauth_version="1.0"



その2

consumer key と consumer secret に問題がなければ、oauth_tokenを取得できる。

twitterのログインページ(上図 ttps://api.twitter.com/oauth/authorize)にoauth_tokenをパラメータにつけてリダイレクトする。


ttps://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXX



その3

twitterのログインページでアプリを承認をすると再びウチのページに戻ってくる。

その時、oauth_token と新たに oauth_verifier というパラメータを付けてくる。


ttp://example.com/test.cgi?oauth_token=KDCCCCYXXkdieKKDDDDIONkciwehkIDKENGIEGKDInhQDc&oauth_verifier=PQINdinehgkEoengDleGdIENGDKIGKEOngesged



その4

oauth_verifier をパラメータに追加して ttps://api.twitter.com/oauth/access_token にPOSTでアクセスする。

postのcontent


oauth_callback=&oauth_consumer_key=XXXXXYYYYYIUYnHGGGYEN&oauth_nonce=%444%8765d%24Hnl6V5mrifewf93h3b%2FWC0&oauth_signature=r4c0T3Ufewfiwoefwbiowfweas3D%0A&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1385254657&oauth_token=f93fwKIfjiewofwefibwefeoaifdeeeoibD&oauth_verifier=KOEFWODIVDIFEDKFOMMZVDJJFKLFJQFIJOEGI&oauth_version=1.0


問題がなければ、oauth_token と oauth_secret と screen_name が取得できる。


後はこの oauth_token と oauth_secret を使って(セッションなど利用して)ユーザーがウチのサービスを使えるようにする。



補足:OAuth のパラメータ

URL

METHOD

oauth_callback

oauth_consumer_key

oauth_nonce(一意のランダムな文字列)

oauth_signature(署名)

oauth_signature_method(署名の方法 HMAC-SHA1)

oauth_timestamp(タイムスタンプ timeの出力)

oauth_version(oauthのバージョン)


署名の作り方についてはこのあたり→ 「token secretの保存」(2009/12/26)



ここんとこ、ツイート1のスパムアカウントからのフォローが断続的に続いて、いちいち手動でスパムブロックするのが面倒になったので、一括スパム報告するスクリプトを作ってみたら…OAuthなどずいぶんいろいろ忘れてたので、備忘録。

もの忘れが激しい。とほほ。


<<2026/2>>
       
1234567
891011121314
15161718192021
22232425262728
検索:

【最近の20件】