破壊的にときめく?日記ブログでタグ「Twitter」が付けられているもの

Twitter APIが新しくなってから放置していて忘れてしまったのでメモ。
他色々検索すると例が出てくるけど、もうちとシンプルにならないものかと思いまして。 PEAR::OAuthとPEAR::JSONを使ってます。 phpのjson関数が使えればよかったのですけれど、WebArenaのPHPには実装されていませんでしたので。
movable typeにSyntaxHighlighterプラグイン入れることが出来るみたいでトライしてみたけど、MTのヴァージョンが古いから?かなんかうまくいかなかった。そんな所の検証も込めて
TwitterでConsumer KeyとSecretを取得して、以下のソースをコピペって設定すれば、簡単にTwitter APIが利用できるようになるはず......多分(^^;;;
<?php
// PEAR::OAuthとPEAR:;JSONを利用したTwitter OAuth実行例
//
// Twitter My Application作成ページ: https://dev.twitter.com/apps
// Twitter REST API 1.1: https://dev.twitter.com/docs/api/1.1
require_once('HTTP/OAuth/Consumer.php');
require_once('Services/JSON.php');

// twitterで作成されたconsumer_key
$consumer_key='xxxxxxxxxxxxxxxxxxx';
// twitterで作成されたconsumer_secret
$consumer_secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXX';

$get_access_token_url='https://api.twitter.com/oauth/access_token';
$request_token_url='https://api.twitter.com/oauth/request_token';
$authorize_url='https://api.twitter.com/oauth/authorize';
// 自分自身のURLを設定
$callback_url='yyyyyyyyyyyyyyyyyyyyy';

// セッション開始
session_start();
// HTTP OAuthコンシューマを生成
$consumer=new HTTP_OAuth_Consumer($consumer_key,$consumer_secret);
// SSL通信を可能にする
$http_request=new HTTP_Request2();
$http_request->setConfig("ssl_verify_peer",FALSE);
$consumer_request=new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$consumer->accept($consumer_request);
// access_tokenとaccess_token_secretを取得してないなら......
if((isset($_SESSION['access_token'])!=TRUE)||
	(isset($_SESSION['access_token_secret'])!=TRUE)){
	if(isset($_GET['oauth_verifier'])==TRUE){
	// oauth_verifierが貰えてたら、access_tokenとaccess_token_secretを取得しセッションに保存
		$consumer->setToken($_SESSION['request_token']);
		$consumer->setTokenSecret($_SESSION['request_token_secret']);
		$consumer->getAccessToken($get_access_token_url,$_GET['oauth_verifier']);
		$_SESSION['access_token']=$consumer->getToken();
		$_SESSION['access_token_secret']=$consumer->getTokenSecret();
	}else{
	// oauth_verifyが貰えてなければ、twitter認証ページに遷移しoauth_verifierを貰う
		$consumer->getRequestToken($request_token_url,
			$callback_url);
		$_SESSION['request_token']=$consumer->getToken();
		$_SESSION['request_token_secret']=$consumer->getTokenSecret();
		$auth_url=$consumer->getAuthorizeUrl($authorize_url);
		header("Location: ".$auth_url);
	}
}
// access_tokenとaccess_token_secretを取得済み(認証済みAPIが使える状態)
// 後はご自由に......
// 例 : Account/VerifyCredentialでスクリーン名を取得
// 要求に先立ってもらったaccess_tokenとaccess_token_secretを設定
$consumer->setToken($_SESSION['access_token']);
$consumer->setTokenSecret($_SESSION['access_token_secret']);
$response=$consumer->sendRequest("https://api.twitter.com/1.1/account/verify_credentials.json",
	array(),"GET"); // 第2引数にパラメータを設定、この関数では空array(NULLではダメ)
if($response){
// PEAR::Service_JSONを利用してJSONをデコード (WebArenaのPHPではjson関数が使えなかったから(´・ω・`)
	$json=new Services_JSON();
	if($json!=null){
	// デコードするのはBODY部分:ここ大事
		$resultData=$json->decode($response->getBody());
		if($resultData){
			echo $resultData->screen_name;
		}
	}
}
?>
そんなこんなで過去作ったものをぼちぼち再起動できるように修正中
やっぱなんかSyntaxHighlighter効いてないや
MovableTypeからWordPressにブログも移動したいんだけどね~面倒くさい
こんなの作ってみたんですが、やはり根本的に問題あり

このアプリケーションは3層構造なのですが、認証の処理がアプリケーション層にあるのでせっかく認証が通っても中間層が別のプロセスで動いていてそちらでは認証処理をしていないので、結局の所全ての情報にアクセスできないという作りになってしまっている
(例)ツィートを非公開にしているユーザさんがベースのリストが取得できない等

中間レイヤ(自作REST API)に認証系を含めた形で作り直さないとこれは解決できない......ってことでもう一度考え直そうっと。
上のはとりあえず実験っという意味で置いておきましょう。作り直したら消去予定っす。
OAuth
私もこうした認証に関して少し前OpenID等色々検討してみましたが、OpenIDはサーバ側実装が大変......そうなるとやはりGoogle APIなどと同じようなKey生成の仕組みかなぁ等と考えて某サービスで実装済みですが、このOAuthの仕組みはOpenIDよりも使いやすいな
認証情報を渡してしまった後、プログラムから色々制御できてしまうようになるのは確かに少し問題ありかもしれません。Twitterの場合、本家で書き込みしたほうが良いでしょう。
<Twitter OAuthクライアント作成URL>
http://twitter.com/oauth_clients/ (Twitterログイン必要)
CAPCHAは2単語をスペースで区切って設定、descriptionが短いと登録できない
あとcallback URLなどテストのために変更しまくっているとどこかにキャッシュされているようですぐに反映できない風に感じられました

「Twitter OAuthってどんな風にやるんだろ?」ってことでアブラハムさんのPHPサンプルを参考にしました。
http://github.com/abraham/twitteroauth
PHPですとPEARにもありますね。

カレンダー

<   2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

今度の予定

2014/01/03-04 大洗
2014/02/15 茅原実里FCイベント

ウェブページ

月別 アーカイブ

Powered by Movable Type 4.1

タグ

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

全国電力使用状況

旧旧ページ跡地