OSDE(OpenSocial Development Environment)を使った開発環境Tips

こないだ初めてバンジージャンプ飛びました。agoです。

先ごろmixiアプリが一般開発者公開されましたが、皆様開発環境どうしてるでしょうか?

私はmixiの開発環境では認識されるマイミクが少なかったり、キャッシュが効きすぎたりで開発しづらいため、OSDEで開発後mixiで確認という手順を取っています。

そこで今回はOSDEで開発する際に役に立ちそうなTipsをいくつかご紹介したいと思います。

1 requestNavigateToで独自パラメータが上書きされない

OpenSocial-Japanでも紹介されているのですが、現在OSDEにはrequestNavigateToで独自パラメータが上書きされないというバグがあります。 (2009/04/28現在 OSDE 0.2.5で確認)

次のバージョンでは修正されているとのことなのですが、以下のようなコードでも回避可能なので若干強引ではありますがこれを組み込んで修正しています。 (以下のコードはOSDE環境のみ実行されます。mixi環境上ではこの問題が起きないことを確認しています)

new function () {
    if (opensocial.getEnvironment().getDomain() !== 'osde') return;
    gadgets.views.requestNavigateTo = function (view, param) {
        var href = window.parent.location.href;
        param = gadgets.json.stringify(param).replace(/^\{|\}$/g, '');
        param = escape(param);
        var next = href
            .replace(/(&|\?)view=\w+/, '$1view='+view.getName())
            .replace(/(&|\?)appParams=\{.+?\}/, '$1appParams={'+param+'}')
        ;
        window.parent.location.href = next;
    };
};

2 gadgets.io.makeRequestで日本語が化ける

gadgets.io.makeRequestのgadgets.io.ContentType.TEXTやgadgets.io.ContentType.DOMでファイルを取得すると、日本語の部分が文字化けすることがあります。

いったん内容をJSONに変換してgadgets.io.ContentType.TEXTで受信後gadgets.json.parseすれば化けることはないので、以下のようなphpに中継させれば安全に受信できます。 (以下のphpはセキュリティを気にしてないので開発環境でのみ使用してください。また、mixiでは文字化けは発生しませんでした)

json.php
<?php print json_encode(file_get_contents($_GET['file'])); ?>

opensocial script
var params = []
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
gadgets.io.makeRequest('http://localhost/json.php?file=http://www.exapmle.com/index.txt', function(response) {
    var json = gadgets.json.parse(response.text);
}, params);

カヤックではjavascriptに詳しい方や、opensocialアプリ作成経験のある技術者を募集しています!

関連記事

マイスペースアプリの開発tips

jQuery.opensocial_simple Pluginを作成しました。