- ベストアンサー
PHPでTwitterAPI利用時のサーバー設定について
- TwitterAPI(ver1.1)を利用して自分のつぶやきをPHPで取得するためのサーバー設定についての質問です。
- OAuth.phpとtwitteroauth.phpを利用して認証を行っており、レンタルサーバーではつぶやきのデータを取得できましたが、自分で構築したVPSのサーバーでは取得できません。
- さらに、プログラム中の変数$req以降の部分がvar_dumpしても表示されないため、TwitterAPIからのメッセージを表示させたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
twitteroauthだとJSONを取得できなかったときの原因追及が困難なので、よければ代わりにTwistOAuthを使ってください。twitteroauthを意識した設計になっていて、学習コストは低く、且つそれよりも豊富な機能と高い信頼性を実現しています。作者自分で言うのもアレですが事実上の上位互換です。 TwistOAuth https://github.com/mpyw/TwistOAuth 【サンプル】 PHPバージョン5.4以降を想定しています。array_mapが分かりにくかったら普通にforeachで書いてもらっても構いません。 <?php require 'TwistOAuth.php'; // ここにキーを設定 $ck = ''; $cs = ''; $ot = ''; $os = ''; // 今回はHTMLではなくプレーンテキストとして簡易表示 header('Content-Type: text/plain; charset=utf-8'); try { $to = new TwistOAuth($ck, $cs, $ot, $os); print_r(array_map( function ($status) { // 公式リツイートの場合は元ツイートに置換 if (isset($status->retweeted_status)) { $status = $status->retweeted_status; } // ステータスオブジェクトをもとに整形して表示したい文字列を生成 // ツイート本文だけはあらかじめエスケープされているので // テキストとして表示する場合は逆にアンエスケープが必要 return sprintf('%s(@%s): %s', $status->user->name, $status->user->screen_name, htmlspecialchars_decode($status->text, ENT_NOQUOTES) ); }, $to->get('statuses/user_timeline', ['count' => 10]) )); } catch (TwistException $e) { echo 'エラー:' . $e->getMessage(); }
その他の回答 (1)
あ、PHPバージョン5.3.3でしたか。このバージョンでは配列の省略記法は使えないので ['count' => 10] を array('count' => 10) に変更してください。 …しかし、PHPバージョン5.3のサポートは既に終了しており、脆弱性などが見つかってもパッチは発行されません。その次のバージョンの5.4でさえも1年以内にサポートが終了する予定です。環境的な理由でどうしてもアップデート出来ないなどのケースを除けば、最近は5.5と5.6がスタンダードになりつつあります。セキュリティ面だけではなく今回のように機能面で不便を感じることも多いので、可能な限りサポートされている新しいバージョンを使うようにしましょう。VPSであれば自由にPHPをインストールできるので5.6を使うのがいいと思います。
お礼
To_aru_Userさま ご回答ありがとうございます。 PHPのバージョンはこれを期にアップデートしたいと思います。 バージョン5.6という情報もありがとうございました。 最新のものにしてみます。
お礼
To_aru_Userさま ご回答ありがとうございます。 「twitteroauth」以外にも認証の仕組みがあるんですね。 丁寧にソースまで書いていただいてありがとうございます。 導入の検討をしてみたいと思います。 ありがとうございました。