Twitterのidを取得するときは「id_str」

Twitterの自分のツイートを記録してブログ風に表示できるページを作っています。

スタニッキ

TwitterのAPIを使い、JSON形式で取得し、PHPでMySQLに保存します。
最近、これが正しく動作しなくなりました。
Twitterは各ツイートにidが付けられていますが、このidが桁落ちします。Twitterのidは16桁あるのですが、私のプログラムでは有効なのは上12桁だけで下4桁が「0000」になってしまいます。

bird_aoitori_bluebird

原因を探ってみると、最近、Twitterの仕様が変わったようです。
idが11月4日までは11桁だったのが5日に15桁に増え、7日には16桁になっています。
11月5日に仕様の変更があったようです。

PHPでは、変数に数値を代入したときに自動的に丸めてしまいます。これが原因だと思われます。このようなときは数値(整数)ではなく文字列で処理すればよいのですが、TwitterのAPI(JSON形式)では「”id”:123456789」となっていて、PHPでは数値として読み込んでしまいます。

強制的に文字列として読み込む方法を模索したのですが、うまくいきません。
しかし簡単な解決方法がありました。
今回の仕様の変更に伴い、APIの仕様も変わっていたようです。
「id」の他に「id_str」という項目が新設されていました。

“id”:123456789
“id_str“:”123456789”

このように値は一致しますが型が異なります。
PHPのコードの「id」を「id_str」に置き換えるだけで正しく動作するようになりました。
「in_reply_to_status_id_str」、「in_reply_to_user_id_str」も同様です。

11月5日以降に取得した内容が間違っていたので、これらを削除し、再度、実行したところ、正しく取得することができました。

コメント

タイトルとURLをコピーしました