自分への返信のうち、2304268200以降のIDをもつものを抽出し、それぞれの返信のIDと発言内容を表示させる、という機能を実装しようとして、以下のようなコードを書きました。
-------------------------------
$reply_get_url = "http://" . $username(←ユーザー名) . ":" . $password(←パスワード) . "@twitter.com/statuses/replies.json?since_id=2304268200";
$lines = json_decode(file_get_contents($reply_get_url));
foreach ($lines as $line){
print("line->id = " . $line->id);
print("line->text = " . $line->text);
}
-------------------------------
このプログラム、ローカルのApacheサーバーで実行すると正常に動作しましたが、契約している専用サーバー上で実行すると、発言内容はきちんと取れますが、それぞれの発言のIDが全て同じ、しかも「2304268200」より前のIDなのです。
実は1ヶ月前にはこのコード、専用サーバー上でも正常動作していました。
そう考えると、APIの仕様変更があったと考えるのが妥当な気がしますが、そうするとローカルのApacheサーバーでうまく動いていることの説明がつきません。
完全な解決策(あるのか?)でなくても良いので、手がかりになりそうなものでもお寄せいただけますと幸いです。
専用サーバは固定IPを持っていますか?
これはまったくの想像ですが、Twitterは単位時間あたりのAPIリスクエストを制限しているようなので、その専用サーバが属しているIP範囲に、他に大量のTwitter APIをリクエストしているサーバがあり、そのために規制を受けているのかもしれません。
「Twitter REST API Method: account rate_limit_status」を参考にしてください。
なるほど、固定IPは持っているのですが、そういった可能性もあるのかもしれないのですね・・・。
他との競合という可能性は考えていませんでした。ありがとうございます。
ただ、なぜか発言内容自体は取得できているのでリクエスト自体は受け付けられているのでは・・・?と思うのです。謎だ・・・。