2012年1月29日日曜日

続々・Titanium Mobile で mixi Graph API

おめたんコメントを、FacebookとかGoogle+とかWassrとかでいただきました。
ありがとうございます!
同居している人達からは、何もお祝いを言われていないまま、誕生日が終わろうとしています!やったね!
あ、昔の同僚がおめでとうとLINEで言ってくれました。ええ子やで。keiちゃんええ子やで。

というわけで、mixi Graph API で文字化けする原因?と、対処法がわかりました~。
なんで文字化けしてしまったのかは、わからないんだけど、
(UTF-8エンコード宣言しているにもかかわらず、EUCで書いて保存しているっぽいのではと思う)
前回のエントリで紹介した jcode.js と utf8.js (?) 的にいうと、

var str = "わっかっさー!わっかっさーってなぁんだっ!";
str = _to_utf8(_to_euc(str));

こういうエンコード状態になっているみたいです。

なので、

str = _from_euc(_from_utf8(str));

こうすることで、元に戻ります。

で、きれいに文字が表示されるようになりましたよーひゃっほーう!

で、mixiボイス投稿とmixiボイス返信とイイネ!を実装しようとしたんだけど、
投稿についてはできるんだけど、
mixiボイス返信とか、イイネ!が出来ない。
理由は、UpdateAPI でデータを取得すると、
VoiceAPIで取れば取得できる、POST-ID という一意なIDが取得できないため。

http://developer.mixi.co.jp/connect/mixi_graph_api/mixi_io_spec_top/voice-api/

これがないと、返信もイイネも出来ない。
ていうか、mixi のWebサイト上だと、mixi チェックだろうが日記だろうがなんだろうが、
イイネ!出来るはずなのに、 UpdateAPI に POST-ID が無い限り、どうしようもない。

UpdateAPI で取得できる JSON データ上で、id というカラムはあるんだけど、
中身が id ではなくて、URI になってる。

http://mixi.jp/view_check.pl?post_time=20120129202439#owner_id=cqs7s4qrou1ae_1327836279

アクセスしても、データがありませんと言われる。
これに対して何かアクションを起こせば、POST-ID が取れるのなら、取りに行くんだけどなぁ。
あ。でも、待てよ?

VoiceAPI の POST-ID のサンプルを見ると、
[
  {
    "id" : "1FZ3P4ACUWBBC-2010061010321",
    "created_at" : "Thu Jun 10 01:32:13 +0000 2010",
    "text" : "つぶやきの本文",
    "user" : {
      "id" : "1FZ3P4ACUWBB",
      "screen_name" : "Becky",
      "profile_image_url" : "http://profile.img.mixi.jp/photo/user/1FZ3P4ACUWBBC_301280930.jpg",
      "url" : "http://mixi.jp/show_friend.pl?uid=1FZ3P4ACUWBB"
    },
    "photo" : [
        {
            "thumbnail_url" : "http://id.photo.mixi.jp/....",
            "image_url" : "http://id.photo.mixi.jp/....",
        }
    ],
    "favorited" : false
  }
]
こうなってるので、
URLを分解して、 post_time= と owner_id = をくっつけりゃいいじゃんねぇ。
でも、なんかよくよくみると、 user.id (1FZ3P4ACUWBB) と id (1FZ3P4ACUWBBC) だと、
id の 方が、最後にCが余計だよね。関係あるのかな?なんでもいいからCつけてみりゃいいか。

    var id = "http://mixi.jp/view_check.pl?post_time=20120129202439#owner_id=cqs7s4qrou1ae_1327836279";
    id = id.replace("post_time=","").replace("owner_id=","").split("?")[1].split("#");
    id = id[1].split("_")[0].toUpperCase() + "C-" + id[0];
    alert(id);

こんな感じでどうだろ。やってみよう。
やってみたけど、ん~。NotFoundって言われるわぁ。
ん~。困ったわおん。チョイ調べる。

0 件のコメント:

コメントを投稿