APIにも使われるOAuth認証のしくみTwitter用の自作BotをPHPで作る際に勉強したんですが、なかなか複雑で理解するのに時間がかかってしまいました。APIを利用するシーンを想定して解説してみようと思います。Token)」をTwitterから得るのが目標ですOAuthによる認証がうまくいくと、Twitterのような既存のサービスで管理されているユーザーアカウントを自分のWebアプリ上とも共有できるようになります。Token)」というものをユーザー情報管理サービス側(今回の場合はTwitter)から発行してもらう必要があります。アクセス・トークンとは何ぞ?アクセス・トークンというのは、Twitterへツイートする際にログインする場合のアカウント情報(ユーザーID+パスワード)を暗号化してまとめた文字列です。OAuthというのは、ユーザーアカウント情報を共有して、提供されているAPIを利用できるようにするしくみなのですが、Twitter側からしたら、共有とは言えどID+パスワードをそっくりコピーさせるわけにはいきません。そんなことをしたら、セキュリティ・リスクになったり、ユーザーがパスワードを変えたい場合も1箇所ではすまなくなったりで大変なことになってしまいます。自作のWebアプリが得られるのは、ユーザーアカウントのショートカット(エイリアス)情報みたいなものだけです。それがアクセス・トークン。アクセス・トークンはユーザーごとに異なるWebアプリにアクセス・トークンを記憶させておけば、ユーザーID+パスワードがなくてもユーザー認識できるわけなんですね。ユーザーID+パスワードの代わりに使える。自作のWebアプリ経由でツイートなんかもさせることができるわけです。この「アクセス・トークン」はすぐに得られるわけではありません。当然ながらアクセス・トークンはWebアプリを利用するユーザーごとに異なった文字列だからです。Botアプリを作る人は、事前にアプリケーション登録をしたユーザー情報から簡単にアクセス・トークンを取得できます。したらアクセス・トークンを得られるのか?サルでも分かる「アクセス・トークンを得るための3ステップ」ステップ1:合言葉(リクエスト・トークン)を発行してもらう今までTwitterサイトでツイートしていたユーザーであってもそうでなくても「Webアプリを使ってツイートするから」ということになるわけですから、新たにTwitterに申請する必要があるんですね。申請するようにユーザーに促すのはWebアプリ側の作業になります。Webアプリ側は、申請からアクセス・トークンを得られるまでの作業をユーザーが秘密裏に行えるように、Twitterに対して「リクエスト・トークン(RequestToken)」という合言葉を発行してもらうようにお願いします。「開けゴマ!」みたいなものですね。合言葉自体はWebアプリ側からは決められません。残念(笑)で、このリクエスト・トークンはWebアプリがTwitterからアクセス・トークンを発行してもらうまでの間、通信の際に合言葉として使われていくのです。ステップ2:ユーザーを申請する次は、利用するユーザーをTwitterに申請します。これもWebアプリの作業なんですが、Webアプリを利用するユーザーを申請するためのページをTwitterに教えてもらいます。Twitterはリクエスト・トークンの情報を利用して申請ページを作ってWebアプリ側へ伝えます。Webアプリ側はユーザーにそのURLを教えて誘導してあげるわけです。ステップ3:証明情報を申請してようやくアクセス・トークンをゲット!ユーザーが申請ページでWebアプリ利用を許可すると、Webアプリが事前に設定しておいたページ(コールバック・ページ)に戻ってきます。Verifier)をもってTwitterにアクセス・トークンを要求します。すると、Twitterからアクセス・トークンが返ってくるので、ユーザーごとにデータベースに保存して、Webアプリで利用できるようにします。以降は、このアクセス・トークンさえあればWebアプリ経由でTwitterにツイートしたり、ユーザーのプロフィール情報を取得したりすることができるようになります。コメントをキャンセルメールアドレスが公開されることはありません。Webサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。田舎に生まれ育ち東京へ。技術はDTPデザインからプログラミングまで、インフラはCD-ROM全盛からクラウドサーバーまで、いろいろなビジネスを作り、関わってきました(知見を生かして専門学校の講師も3年ほど)。今ではAWSで月間100万PVを超えるサービスを制作・運営しながらさらなるノウハウを蓄積中。このサイトではビジネスをITコンサルタント視点で考え、感じた知見や経験が世の中のお役に立てば、という視点で無料記事として公開しています。最近は機械学習による仕事の効率化を研究中。reserved.代表者のライフハックブログ。