【CakePHP】『OAuth consumer component』でつぶやくと返ってくる値のメモ

→ OAuth consumer component
http://code.42dh.com/oauth/


テキストファイルに保存してても、それをどこに置いたのか忘れちゃうので、
ブログに書き残しておくことにします。


下記のようにつぶやくと、JSON形式で、もろもろの情報が返ってきます。


$result = $this->OauthConsumer->post(
'Twitter',
Access token】,
Access token secret】,
'http://api.twitter.com/1/statuses/update.json',
array(
'status'=>'hashtag test.'
)
);
整形した結果が、以下。
これを実際に使うには、
json_decode($result, true)』
しなくちゃいけません。

{
"in_reply_to_status_id_str":null,
"geo":null,
"coordinates":null,
"retweeted":false,
"in_reply_to_user_id_str":null,
"in_reply_to_status_id":null,
"id_str":"143915558939799553",
"contributors":null,
"user"{
"profile_sidebar_border_color":"C0DEED",
"followers_count":104,
"protected":false,
"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/71218860\/portrait_normal.jpg",
"show_all_inline_media":false,
"profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/71218860\/portrait_normal.jpg",
"name":"\u3059\u305f\u3089",
"listed_count":11,
"profile_use_background_image":true,
"location":"Japan:\u798f\u5ca1\u770c\u5317\u4e5d\u5dde\u5e02",
"time_zone":"Tokyo",
"utc_offset":32400,
"profile_text_color":"333333",
"description":"[1979\u751f]\u672c\u540d:\u5bae\u5d0e\u96c4\u7b56\u3002\r\n\u306b\u308f\u304b\u30d7\u30ed\u30b0\u30e9\u30de\u3002PHP\u3001JavaScript\u3092\u52c9\u5f37\u4e2d\u3002\r\n\u300e\u3042\u306b\u3083\u307e\u308b\u63a2\u5075\u30ad\u30eb\u30df\u30f3\u305a\u3045\u300f\u304c\u5927\u597d\u304d\u306a\u3001\u30ad\u30e2\u3044\u304a\u3058\u3055\u3093\u3002\r\n\u30ad\u30c6\u308b\u30bf\u30b0( http:\/\/kitel.jpn.org\/ )\u3092\u5236\u4f5c\u3001\u904b\u55b6\u4e2d\u3002",
"contributors_enabled":false,
"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.png",
"url":"http:\/\/d.hatena.ne.jp\/sutara_lumpur\/",
"id_str":"6412382",
"lang":"ja",
"notifications":false,
"profile_link_color":"0084B4",
"default_profile_image":false,
"friends_count":39,
"profile_background_color":"C0DEED",
"is_translator":false,
"default_profile":true,
"statuses_count":5061,
"profile_background_tile":false,
"created_at":"Tue May 29 11:40:39 +0000 2007",
"verified":false,
"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.png",
"favourites_count":74,
"profile_sidebar_fill_color":"DDEEF6",
"id":6412382,
"follow_request_sent":false,
"following":false,
"geo_enabled":false,
"screen_name":"sutara_lumpur"
},
"place":null,
"in_reply_to_user_id":null,
"truncated":false,
"retweet_count":0,
"favorited":false,
"source":"\u003Ca href=\"http:\/\/kitel.jpn.org\/tags\" rel=\"nofollow\"\u003E\u30ad\u30c6\u308b\u30bf\u30b0\u003C\/a\u003E",
"created_at":"Tue Dec 06 04:51:57 +0000 2011",
"id":143915558939799553,
"in_reply_to_screen_name":null,
"text":"hashtag test."
}

注意点
僕が知りたかったのは、投稿したつぶやきのID番号です。
で、上をよく見ると、同じID番号が2つのキーに格納されています。
しかし、一方は文字列、一方は整数値です。
2種類の型で値を返しているのは、おそらく、古いPHPでは
巨大な整数値を正しく扱えないバグへの対応だと思います。


【参考】TwitterAPIjson_decodeするときに、idの値がオーバーフローする
http://www.usamimi.info/~oomori/entry/35


【参考】TwitterのIDが64bitになるとJavaScript等で問題が出るので対策を
http://blog.fkoji.com/2010/10201250.html


ということで、ID番号を取り出したいなら、
『$result['id_str']』と指定するのが無難でしょう。