忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/06/23 10:46 |
twitterauth.phpでログイン
前回までZend_Oauthでtwitter認証を行いましたが、この仕組みはブラウザ経由でログインさせて云々しないといけません。

何故このような作りになっているかというとそれはOauthの目的そのものなのですが、前回のプログラムをよく見ると、プログラム自体には投稿を行うユーザのID、パスワードの情報が一切渡されていません。
ID、パスワードは直接twitterのサイトに入力します。
するとIDに紐付くAccessTokenおよびAccessTokenSecretというものが発行され、パスワード代わりにこのAccessTokenAccessTokenSecretを使用することで投稿が可能になります。
プログラムはパスワードを一切知らないのに、認証できたという結果だけを利用できるのです。

これはあくまで不特定のユーザにアプリを公開して使ってもらう際に、私はIDやパスワードを盗んだりできませんよという証明に使うものです。
本来AccessTokenAccessTokenSecretには有効期限があるため、それを過ぎると再度パスワードを入力したりする必要があります。
ただ現在のtwitterは何故か無制限になってるみたいですが、これだと結局ID/パスワードを渡したのと同レベルに弄ばれてしまう気がするんだがどうなんだろう。
一応ユーザで取り消すことはできますが、毎回削除とか面倒だし普通しないでしょうし。

もっと手っ取り早く、ブラウザを経由しないで自分専用にローカルに保存したID、パスワードで直接投稿とかはできないでしょうか。
自分専用に期間無制限のAccessTokenAccessTokenSecretをtwitterのサイトから発行できるので、これを予め保存しておくことで、前回まで行っていたOauth認証をパスしていきなり投稿を行うことができます。

http://dev.twitter.com/apps/からアプリケーションを選択し、メニューの「My Access Token」を選びます。
AccessTokenAccessTokenSecretが表示されますが、これが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


2011/01/21 21:51 | Comments(0) | TrackBack(0) | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2011/01/23 | HOME | Symfony1.4 11日目その5>>
忍者ブログ[PR]