« [入門] MySpace固有のVIEWERの属性情報を取得 (MyOpenSpace.Person.Field) | メイン | [余談] ちょwマイスペースwww »

[MySpace] PersistenceAPIで転びやすいポイント

このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをYahoo!ブックマークに追加

MySpaceの「PersistenceAPI」をいじっていたのですが、OpenSocialの仕様通りにコードを打ってもうまく動作してくれなく憤慨していましたw で、色々調べていたら、いくつかクセのような物が分かってきたのでメモ代わりに公開しておきます。(他のコンテナで起きるかは未検証)

  1. newUpdatePersonAppDataRequestにはJSONで渡さないとエラー
  2. getId()の戻り値は’myspace.com:’+ユーザーIDだが、、
    getData()で取得した配列のキーは、ユーザーIDのみ
  3. 保存できる1レコードの最大長は1,024byteまで
FireBugマンセーな世界でしたw


■その1 newUpdatePersonAppDataRequestにはJSONで渡さないとエラー
以下のコードだとうまくいくのですが、 valueに代入する値を、文字列や数値にしたとたんエラーになります。
globalErrorがtrueになり、「ちゃんとしたJSONで渡してくれないとダメなんだから!」と怒られてしまいました。
myspace_persistenceapi_hamaru1.png
クリックで拡大します

サーバへ格納される時に文字列へ、呼び出す時にJSONオブジェクトへ変換する過程を自動でやってくれているのですが、知らないとはまります(^^; 後は日本語などを利用する時はちゃんとエンコード(encodeURIComponent)するっていうのはMySpaceだけではないので割愛。


■その2 getId()の戻り値は’myspace.com:’+ユーザーIDだが、getData()で取得した配列のキーは、ユーザーIDのみ
以下はうまくいくコードです。 ポイントは次の行。
'myspace.com:'を削除してやると、配列のキーとして利用できます。

viewer.getId().replace('myspace.com:', '');
実はメソッドとか用意されてるのかなぁ。これだとかなり気持ち悪いもんなぁ・・・。



■その3 保存できる1レコードの最大長は1,024byte
これは、以前HackathonでMySpaceの中の方は言ってらしたので知ってたのですが(^^; 念のため実験してみました。
myspace_persistenceapi_hamaru2.png
クリックで拡大します

JSONの文法上書いている文字も対象となります。{'a':123}でいうと {} '' : などの記号ですね。変数名は対象とならないようです。将来的に拡張されるかも?

ちなみに、日本語などを格納する場合は事前にencodeURIComponentなどでエンコードしておく必要があるのですが、エンコード後の文字列長(バイト数)が対象となる点に注意。つまり、以下のようなコードを書いてしまうと大変なことに(;´∀`)
getByte関数についてはコチラ。JavaScriptのlengthは「文字数」をカウントしてしまうのでバイト数を求めたい場合には使用しません。

ちょっとはっきりしないのですが、2レコードを作成する場合、それぞれのレコードが1kbyte以下であれば保存できるようです(調査中)

※補足。console.logはFireBugのAPIです。また「OpenSocial入門」を全体的に参照させていただいています。

OpenSocial入門 ~ソーシャルアプリケーションの実践開発
田中 洋一郎
技術評論社
売り上げランキング: 7276

トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/725

コメント (2)

私も MySpace と他コンテナの差が気になり、その差を埋めようと試行錯誤しています。

↓私が気が付いている点です。
http://code.google.com/p/opensocial-jquery/wiki/CrossContainer

ユーザIDの myspace.com: の除去というアイディアは使わせてもらいます。貴重な情報ありがとうございます。

かつべ:

>なかじまんさん
訪問ありがとうございます。
クロスコンテナ難しいですよね(^^; ケータイでサイト作ってるのかってくらい悲しい気持になってきますw

またURLもありがとうございます。参考にさせていただきます!

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.