OAuth1.0認証を取る方法。読み方すら不明な認証をさくっとね。

プログラムプログラミング
スポンサーリンク

OAuth。それは読み方すら知らないけどちょいちょい出てきて私を苦しめる認証。今回もプログラムしていて当然の様に登場して、当然の様に私を絶望の淵に追いやってくれました。今回のターゲットは1.0。情報が細かすぎたり大雑把すぎたりと、苦労しました。

スポンサーリンク

OAuthとは何?1.0とか2.0とかあるけど?

プログラム

OAuthの歴史や由来について

OAuth。それは認証。それはわかるんですけどね…そもそもなんであるんだろうとかいうところからスタートの私。歴史を知っておくことは、今後の勉強の助けになることでしょう。温故知新。

まず読み方を調べてみると「オーオース」と読むらしいです。オーオー。語源的にはauthは「Authorization」でしょうよ。じゃ、頭文字Oはなんなのさ?

OAuth - Wikipedia

wikiのOAuth1.0の説明をみると、どうもTwitter開発時にクックさんが認証方式を開発している歴史が書かれています。それによるとどうも「Open」のオーっぽいですね。オープンな認証方式を、Twitter開発時に必要とされた様です。

OAuthって何やってるの?

そもそも、認証って何なんでしょう。こちらのサイトがとてもわかりやすかったです。

一番分かりやすい OAuth の説明 - Qiita
【期間限定のお知らせ】 『Software Design 2021 年 10 月号』(2021 年 9 月 18 日発売)の第 2 特集『挫折しない OAuth/OpenID Connect 入門』を執筆させていただきました。2021...

簡単にいえばサービスを提供している側と自分たちユーザーさんをセキュアにやりとりしてくれる仕組みってことですね。

OAuthの1.0とか2.0とかって?

これまたこちらのサイトで事足ります。私の存在なんぞ先達がいらしてこそです。ありがとう先輩。

さて、この中でも今回はOAuthの1.0です。情報はあるものの、意外と苦労しました…

OAuth1.0認証を取る:概要

さて、いよいよ認証を取る方法です。このOAuth1.0認証は、TwitterやTumblrのAPIを叩く際に必要とされ、まだまだ現役の認証です。

認証用に鍵(トークンやらなんやら)が必要となり、それらをもらうのに一苦労。その鍵をもらうために、自分なりの理解でやることは以下の3ステップです。

ステップ1:認証用にキーが欲しいんだよね、って言う。
ステップ2:認証取りたいって言ってるけどいい?って聞き返してくるので、「いいよ」っていう。
ステップ3:いいよって言ってくれたので、ホンチャンのキーをもらう

ところで鍵と言っていいのかどうかは不明っす。この鍵さえもらえればAPI叩きまくりです。

OAuth1.0認証を取る:postman編

さてこの認証取得用に便利なツールがあります。そら令和のご時世ですもん。すでにソフトありますわね!

で、そのツールが「postman」です。以前2.0認証を取る際にお世話になりましたが恐ろしいまでに簡単に取れました。

Postman

ここからアプリをダウンロードできます。ダウンロードしたら、この動画。

OAuth 1.0 Authorization Flow using Flickr and Postman

postmanでOAuth1.0を取るために動画で解説してくれています。英語ですが、画面あるのでなんら問題なくできると思います。

思います…が、自分はうまくいきませんでした。なんでだろう。動画はflickerですが、自分はtumblrでした。oauth_verifierのところでつまづきました。何があかんねや…ただ、一度動画見ておくと、先ほどの3ステップの具体事例がわかるので大変ためになると思います。そもそもflickerならばうまくいくと思われます。

OAuth1.0認証を取る:python編

さぁ、postmanで取れなかったものはしょうがない。じゃぁ、どうせなんでpythonで取りましょうや。サンプルコード山ほどあるし。

今回はtumblrでのAPI認証を取りたいので、以下をご参照ください。

API | Tumblr
Tumblr is a place to express yourself, discover yourself, and bond over the stuff you love. It's where your interests connect you with your people.

で、tumblpyを使ってOAuth認証を取るプログラムが以下です。ちなみに今だにpython 2.7です。

# coding: utf-8
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

まとめ

認証系って難しいですよね。規格がいくつもあるし。でも実際プログラムを組んでみるとやってることがなんとなくわかってきたりして楽しいです。

コメント

タイトルとURLをコピーしました