OAuth。それは読み方すら知らないけどちょいちょい出てきて私を苦しめる認証。今回もプログラムしていて当然の様に登場して、当然の様に私を絶望の淵に追いやってくれました。今回のターゲットは1.0。情報が細かすぎたり大雑把すぎたりと、苦労しました。
OAuthとは何?1.0とか2.0とかあるけど?
OAuthの歴史や由来について
OAuth。それは認証。それはわかるんですけどね…そもそもなんであるんだろうとかいうところからスタートの私。歴史を知っておくことは、今後の勉強の助けになることでしょう。温故知新。
まず読み方を調べてみると「オーオース」と読むらしいです。オーオー。語源的にはauthは「Authorization」でしょうよ。じゃ、頭文字Oはなんなのさ?
wikiのOAuth1.0の説明をみると、どうもTwitter開発時にクックさんが認証方式を開発している歴史が書かれています。それによるとどうも「Open」のオーっぽいですね。オープンな認証方式を、Twitter開発時に必要とされた様です。
OAuthって何やってるの?
そもそも、認証って何なんでしょう。こちらのサイトがとてもわかりやすかったです。
簡単にいえばサービスを提供している側と自分たちユーザーさんをセキュアにやりとりしてくれる仕組みってことですね。
OAuthの1.0とか2.0とかって?
これまたこちらのサイトで事足ります。私の存在なんぞ先達がいらしてこそです。ありがとう先輩。
さて、この中でも今回はOAuthの1.0です。情報はあるものの、意外と苦労しました…
OAuth1.0認証を取る:概要
さて、いよいよ認証を取る方法です。このOAuth1.0認証は、TwitterやTumblrのAPIを叩く際に必要とされ、まだまだ現役の認証です。
認証用に鍵(トークンやらなんやら)が必要となり、それらをもらうのに一苦労。その鍵をもらうために、自分なりの理解でやることは以下の3ステップです。
ステップ2:認証取りたいって言ってるけどいい?って聞き返してくるので、「いいよ」っていう。
ステップ3:いいよって言ってくれたので、ホンチャンのキーをもらう
ところで鍵と言っていいのかどうかは不明っす。この鍵さえもらえればAPI叩きまくりです。
OAuth1.0認証を取る:postman編
さてこの認証取得用に便利なツールがあります。そら令和のご時世ですもん。すでにソフトありますわね!
で、そのツールが「postman」です。以前2.0認証を取る際にお世話になりましたが恐ろしいまでに簡単に取れました。
ここからアプリをダウンロードできます。ダウンロードしたら、この動画。
postmanでOAuth1.0を取るために動画で解説してくれています。英語ですが、画面あるのでなんら問題なくできると思います。
思います…が、自分はうまくいきませんでした。なんでだろう。動画はflickerですが、自分はtumblrでした。oauth_verifierのところでつまづきました。何があかんねや…ただ、一度動画見ておくと、先ほどの3ステップの具体事例がわかるので大変ためになると思います。そもそもflickerならばうまくいくと思われます。
OAuth1.0認証を取る:python編
さぁ、postmanで取れなかったものはしょうがない。じゃぁ、どうせなんでpythonで取りましょうや。サンプルコード山ほどあるし。
今回はtumblrでのAPI認証を取りたいので、以下をご参照ください。
で、tumblpyを使ってOAuth認証を取るプログラムが以下です。ちなみに今だにpython 2.7です。
from tumblpy import Tumblpy
#ステップ1:認証用にキーが欲しいんだよね、って言う。
consumer_key = “ここにコンシューマーキー”
consumer_secret = “ここにコンシューマーシークレット”
t = Tumblpy(consumer_key, consumer_secret)
auth_props = t.get_authentication_tokens(callback_url=”http://example.com”)
auth_url = auth_props[‘auth_url’]
OAUTH_TOKEN = auth_props[‘oauth_token’]
OAUTH_TOKEN_SECRET = auth_props[‘oauth_token_secret’]
print auth_url
#ステップ2:認証取りたいって言ってるけどいい?って聞き返してくるので、「いいよ」っていう。
# ステップ1で表示したauth_urlをブラウザにコピペしてエンター。で、いいよっていう。
# この時、アドレスバーの後ろの方のoauth_verifierの値をコピる
#ステップ3:いいよって言ってくれたので、ホンチャンのキーをもらう
t = Tumblpy(consumer_key, consumer_secret, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
oauth_verifier = raw_input(“input oauth_verifier >>>”)
authorized_tokens = t.get_authorized_tokens(oauth_verifier)
oauth_token = authorized_tokens[‘oauth_token’]
oauth_token_secret = authorized_tokens[‘oauth_token_secret’]
#トークンゲット!
print oauth_token
print oauth_token_secret
まとめ
認証系って難しいですよね。規格がいくつもあるし。でも実際プログラムを組んでみるとやってることがなんとなくわかってきたりして楽しいです。
コメント