前回までZend_Oauthでtwitter認証を行いましたが、この仕組みはブラウザ経由でログインさせて云々しないといけません。
何故このような作りになっているかというとそれはOauthの目的そのものなのですが、前回のプログラムをよく見ると、プログラム自体には投稿を行うユーザのID、パスワードの情報が一切渡されていません。
ID、パスワードは直接twitterのサイトに入力します。
するとIDに紐付くAccessTokenおよびAccessTokenSecretというものが発行され、パスワード代わりにこのAccessToken、AccessTokenSecretを使用することで投稿が可能になります。
プログラムはパスワードを一切知らないのに、認証できたという結果だけを利用できるのです。
これはあくまで不特定のユーザにアプリを公開して使ってもらう際に、私はIDやパスワードを盗んだりできませんよという証明に使うものです。
本来AccessToken、AccessTokenSecretには有効期限があるため、それを過ぎると再度パスワードを入力したりする必要があります。
ただ現在のtwitterは何故か無制限になってるみたいですが、これだと結局ID/パスワードを渡したのと同レベルに弄ばれてしまう気がするんだがどうなんだろう。
一応ユーザで取り消すことはできますが、毎回削除とか面倒だし普通しないでしょうし。
もっと手っ取り早く、ブラウザを経由しないで自分専用にローカルに保存したID、パスワードで直接投稿とかはできないでしょうか。
自分専用に期間無制限のAccessToken、AccessTokenSecretをtwitterのサイトから発行できるので、これを予め保存しておくことで、前回まで行っていたOauth認証をパスしていきなり投稿を行うことができます。
http://dev.twitter.com/apps/からアプリケーションを選択し、メニューの「My Access Token」を選びます。
AccessTokenとAccessTokenSecretが表示されますが、これがIDやパスワードのかわりになります。
では投稿してみましょう。
今回はtwitterauthというものを使ってみます。
http://apiwiki.twitter.com/OAuth-Examples
こちらの「Code(GitHub)」リンクからサンプルプログラムが一式ダウンロード出来ます。
認証には、twitteroauthディレクトリ下にある
・twitteroauth.php
・OAuth.php
を使います。
実に簡単ですね。
元々Zend_Service_Twitterで呟こうとしたらZend_OAuthのリダイレクトにぶち当たり、PHPPRO掲示板で聞いてtwitterauthを紹介され、どうにかここまで解消したのですが、今さらになってまったくそのままの回答が書いてあるのを発見してしまった。
なんてこったい。
何故このような作りになっているかというとそれはOauthの目的そのものなのですが、前回のプログラムをよく見ると、プログラム自体には投稿を行うユーザのID、パスワードの情報が一切渡されていません。
ID、パスワードは直接twitterのサイトに入力します。
するとIDに紐付くAccessTokenおよびAccessTokenSecretというものが発行され、パスワード代わりにこのAccessToken、AccessTokenSecretを使用することで投稿が可能になります。
プログラムはパスワードを一切知らないのに、認証できたという結果だけを利用できるのです。
これはあくまで不特定のユーザにアプリを公開して使ってもらう際に、私はIDやパスワードを盗んだりできませんよという証明に使うものです。
本来AccessToken、AccessTokenSecretには有効期限があるため、それを過ぎると再度パスワードを入力したりする必要があります。
ただ現在のtwitterは何故か無制限になってるみたいですが、これだと結局ID/パスワードを渡したのと同レベルに弄ばれてしまう気がするんだがどうなんだろう。
一応ユーザで取り消すことはできますが、毎回削除とか面倒だし普通しないでしょうし。
もっと手っ取り早く、ブラウザを経由しないで自分専用にローカルに保存したID、パスワードで直接投稿とかはできないでしょうか。
自分専用に期間無制限のAccessToken、AccessTokenSecretをtwitterのサイトから発行できるので、これを予め保存しておくことで、前回まで行っていたOauth認証をパスしていきなり投稿を行うことができます。
http://dev.twitter.com/apps/からアプリケーションを選択し、メニューの「My Access Token」を選びます。
AccessTokenとAccessTokenSecretが表示されますが、これがIDやパスワードのかわりになります。
では投稿してみましょう。
今回はtwitterauthというものを使ってみます。
http://apiwiki.twitter.com/OAuth-Examples
こちらの「Code(GitHub)」リンクからサンプルプログラムが一式ダウンロード出来ます。
認証には、twitteroauthディレクトリ下にある
・twitteroauth.php
・OAuth.php
を使います。
<?php //require require_once('twitterauth.php'); //定義 $consumer_key = '*****'; $consumer_secret = '*****'; $access_token = '*****'; $access_token_secret = '*****'; //投稿 $TwitterAuth = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $req = $TwitterAuth->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"投稿テスト"));
実に簡単ですね。
元々Zend_Service_Twitterで呟こうとしたらZend_OAuthのリダイレクトにぶち当たり、PHPPRO掲示板で聞いてtwitterauthを紹介され、どうにかここまで解消したのですが、今さらになってまったくそのままの回答が書いてあるのを発見してしまった。
なんてこったい。
PR
トラックバック
トラックバックURL: