twitterの変更前にOAuth認証を導入して、自分のツイートを取得するメモ

3月5日の変更前に、php+OAuth認証を使って自分のツイートを取得できるように準備しておきましょう。

下準備として、Twitter Developersのページで、表示させるtwitterアカウントでアプリケーション登録をし、『Consumer key』『Consumer secret』『Access token』『Access token secret』を取得します。

Twitter Developers
 ↓
新しくアプリケーションを登録
Create an application | Twitter Developers
・Name:mytweeetdesuyo(適当でok)
・Description:自分のツイートを表示させるんです(適当でok)
・Website: 自分のサイトのURL
を記入して登録。
 ↓
登録完了「OAuth settings」の『Consumer key』『Consumer secret』をコピーして保存して、ページ下の「Create my access token」をクリック
 ↓
すると「Your access token」の下に『Access token』『Access token secret』が表示されるので、これを保存しておく。
 ↓
下準備完了!

php側は、以前はPEARを使っていたんですが、今回は「abraham/twitteroauth」を利用させてもらいます。

abraham/twitteroauth · GitHub

利用するファイルはダウンロードしたファイルを解凍した中の「twitteroauth」フォルダの中はOAuth.php、twitteroauth.phpの2つ。

以下自分のツイートをjson形式で出力するサンプル。

//読み込むファイルはtwitteroauth.phpのみでok。パスは環境にあわせて変更してくださいな。
require_once("twitteroauth/twitteroauth.php");
 
$consumerKey = "保存したConsumer key";
$consumerSecret = "保存したConsumer secret";
$accessToken = "保存したAccess token";
$accessTokenSecret = "保存したAccess token secret";
 
$twObj = new TwitterOAuth($consumerKey,$consumerSecret,$accessToken,$accessTokenSecret);
//JSON形式で情報を取得 varは1.1に
$request = $twObj->OAuthRequest("https://api.twitter.com/1.1/statuses/user_timeline.json","GET",array("count"=>"10"));
$twJsonData = json_decode($request);

header("Content-Type: application/json; charset=utf-8");
echo $twJsonData;

json形式で取得しているためjson_decodeを利用しますが、万が一使えない場合は下記ページを参考にJsphonを利用してみてください。

Jsphonをcodereposにアップロードしました。 – 株式会社RYUS

あとはキーがところどころ変わってたりするようなので、jsonデータを確認しながら、javascriptでいじるなり、phpで整形して出力するなりしてくださいな。

REST API v1.1 Resources | Twitter Developers

今更ながらphpからtwitterAPI利用メモ

https://dev.twitter.com/にアクセスして、アプリケーションの登録をする。

で、登録した後に「Consumer key」「Consumer secret」、My Access Token のページで「Access Token (oauth_token)」「Access Token Secret (oauth_token_secret)」をメモ。

これでtwitter側は完了。

phpではPEARの「Services_Twitter」を利用する。

Services_Twitterを利用するために下記のライブラリもダウンロード。

HTTP_Request2

Net_URL2

HTTP_OAuth

で、準備できたところで下記コードにて書き込み。

    require_once 'Services/Twitter.php';
    require_once 'HTTP/OAuth/Consumer.php';

    try {
        $twitter = new Services_Twitter();
        $oauth   = new HTTP_OAuth_Consumer(
           'Consumer key',
           'Consumer secret',
           'Access Token (oauth_token)',
           'Access Token Secret (oauth_token_secret)'
        );
        $twitter->setOAuth($oauth);
        $msg = $twitter->statuses->update("twitterへ投稿するメーセージ");
    } catch (Services_Twitter_Exception $e) {
        echo $e->getMessage();
    }

これでOK!

jQueryでAjaxチャット

jQueryの$.ajax触りがてら、$.getJSONも使ってAjaxチャットを作ってみました。

jQueryでAjaxチャット

チャットは今まで一回も作ったことがなかったので今イチやりかたがわからなかったんですが、やっぱりがつがつデータをとりにいくしかないようでsetTimeoutを使いました。一応IBMのページに書いてあったように更新されたデータだけを取りにいくようにしたけど、PHP側を修正する必要があるな…。

しかしチャットは結構難しいですね。今回はめっちゃ簡単なものにしているので完成度はかなり低いですが、インタフェイスや仕様を本気で考えるとなかなか骨が折れそうなかんじです。

今回は簡易チャットということで仕様もあまり決めず適当に作ってしまったので、動作不良が多々あるやもしれませんが、まあせっかく作ったので公開してみます。(今回も初心者まるだしのソースなので見たい方は直接ソースをのぞいてやってください。)

参考ページ
Ajax と XML: チャットのための Ajax