10月 26
Posted at 14:07 by Hiro

一六社のバナー広告を取得するREST APIを使って、Twitterへの自動ポスティングAPI(仮名:地域ツイッター)を地道に開発しています。地域ツイッターは地域ホームページのオーナー様に代わって、Twitterへネットチラシなどの広告をつぶやくことになるのですが、Twitter APIを利用するには必ず「ログイン」というプロセスを経なければなりません。従来、Twitter APIではBasic認証が使われており、account/verify_credentialsメソッドでTwitterにログインすることになります。

セキュリティ上の問題

しかし、account/verify_credentialsメソッドを使うためには、ログインするユーザーのアカウント(またはメールアドレス)とパスワードが必要になります。地域ツイッターは地域ホームページのバックグラウンドで実行されることになるので、オーナー様の認証情報(アカウントとパスワード)をAPI経由で渡してもらうこともできますが、PHPなりHTMLなりJavaScriptなり、どこかしらにオーナー様の認証情報を(恐らく暗号化されていない状態で)ハードコーディングしてもらわなければならないので、セキュリティ上あまり好ましくありません。

最初は、地域ツイッターのログインページを用意して、そこにTwitterのアカウントとパスワードを入力してもらい、account/verify_credentialsメソッドを使ってTwitterへのログインに成功したら、認証情報を暗号化した状態でデータベースに保存するという方法を考えていました。しかし、データベースに大事な認証情報を保存することは、例え暗号化されているとは言え、オーナー様にとってもH2+にとってもリスクが大きいですし、オーナー様がTwitter側でパスワードを変更してしまった場合に、データベースに保存されている認証情報は同期がとれなくなってしまいます。

はてさてどうしたものか?

OAuthという認証方法

OAuthという言葉は耳にしたことはあったのですが、それがどういう仕組みで動いているのかまったく知りませんでした。Twitter APIのドキュメントにも、従来のBasic認証よりもOAuthを使った認証を推奨する記載があったので、Twitter APIの認証に関するドキュメントBeginner’s Guide to OAuthを併せて読んで勉強。

とりあえず、サードパーティアプリケーションがTwitterのOAuth認証を使うために最低限必要なことは3つ。

  • Twitterアカウントを作る
  • Twitterにログインする
  • Twitterにアプリケーションを登録する

最初の2つはTwitterを使っていれば造作もないことですが、個人で使っているTwitterアカウントとは別にアプリケーション用のアカウントを作っておいた方がいいでしょう。ここでは、地域ホームページ下総中山のアカウントを使って、Twitterに「地域ツイッター」のアプリケーションを登録してみます。なお、登録する時点でアプリケーションがネット上に公開されていなくても大丈夫です(「地域ツイッター」はまだ開発中ですし…)。

Twitterにアプリケーションを登録

Twitterにログインした状態でhttp://twitter.com/oauth_clientsにアクセスすると、以下のような画面が表示されます。

oauth_clients

Register a new applicationをクリックして登録画面に進みます。

registration

  • Application Icon
    アプリケーションのロゴなど画像ファイルをアップロードします。
    アプリケーションを利用するTwitterユーザーの[設定]-[Connections]タブ内で表示されます。
  • Application Name
    アプリケーションの名称。
  • Description
    アプリケーションの説明文。
  • Application Website
    アプリケーションのホームページURL。
    登録時点で実在しなくてもOK。
  • Organization
    アプリケーション開発元(つまり、あなた)の名前。
    プロフィールに公開している名前と同じでいいでしょう。
  • Website
    アプリケーション開発元のホームページURL。
    これもプロフィールと同じでいいでしょう。
  • Application Type
    開発するアプリケーションの種類を「Client」、「Browser」から選択。
    Webアプリケーションならば「Browser」でOK。
  • Callback URL
    Twitterによるユーザー認証が成功した後のリダイレクト先となる、アプリケーションのコールバックURLです。
    登録時点で実在しなくてもOK。
  • Default Access type
    アプリケーションに与えられるアクセス権を「Read & Write(読み書き)」、「Read-only(読み取り専用)」から選択します。
    認証後につぶやきを投稿したりするのであれば「Read & Write」を選択。
    タイムラインを表示するだけであれば「Read-only」を選択。
  • Use Twitter for login
    アプリケーションがユーザーにTwitterへのログインを要求するのであればチェック。
    認証が必要ないアプリケーションであればチェックしないでOK。

最後に画像認証の文字を入力して「保存する」をクリックすると、アプリケーションに発行されたOAuthのConsumer key(アプリケーションの識別子)やConsumer secret(アプリケーションの秘密鍵)などを表示する画面に移ります。

registered

ここに表示されている情報は、OAuthクライアントを実装する上で必要になる各種パラメータです。特に、Consumer keyとConsumer secretは外部に漏れないように注意しましょう。

登録した内容はいつでも編集可能なので、アプリケーションの開発過程でホームページURLやコールバックURLなどを適宜修正していきましょう。

2 Pings to “TwitterにOAuthクライアントアプリを登録する方法”

  1. OAuth認証ってナニ? | H2+ Goes On Says:

    [...] TwitterにOAuthクライアントアプリを登録する方法 [...]

  2. Zend_Oauthを使ってOAuth認証するチュートリアル(前編) | H2+ Goes On Says:

    [...] TwitterにOAuthクライアントアプリを登録する方法 [...]


コメントをどうぞ