こんにちは。Nobuhiro Nakajima です。
OpenSocial Pages の最新ソースコードを公開しました。Downloads から opensocial-pages-0.9.3.zip をダウンロードしてください。
Google Apps Marketplace で公開している OpenSocial Pages for Google Apps と同じソースコードになっています。ですので、次のとおり手を加えて、自分自身の環境で期待どおり動作するように、改造する必要があります。
web.xml
Google Data APIs に 2-Legged OAuth でアクセスするための Consumer Key と Secret を指定してください。Consumer Key と Secret は Google Apps Perimer の Advanced tools か Google Apps Marketplace で手に入ります。
<context-param>
<param-name>consumerKey</param-name>
<param-value>(Your Consumer Key)</param-value>
</context-param>
<context-param>
<param-name>consumerSecret</param-name>
<param-value>(Your Consumer Secret)</param-value>
</context-param>
PermissionFilter.java
OpenID Federated Login (Google Apps) を UserService を使って実装してあります。Google Apps Perimer で Google Apps と連携するときは、AppEngine の認証を Google Acount に切り替えて、Google Apps ドメインと関連付け、UserService を使っている個所を調整すればよいでしょう。
Google Apps や Google Apps Marketplace 関連の実装の参考になれば幸いです。
JavaScript をこよなく愛する なかじまんソフトウェア株式会社 のスタッフによるブログです。
OpenSocial Container や Social Gadgets の開発を技術面から支援します。
2010-08-16
2010-08-11
OpenSocial Pages は osapi.http に対応しました。gadgets.io.makeRequest 以上の大きなメリットがあります。
こんにちは。Nobuhiro Nakajima です。
OpenSocial Pages for Google Apps で osapi.http API を使えるようにしました。
osapi.http は gadgets.io.makeRequest メソッドに相当するものです。さらに osapi.http は、バッチリクエストにも対応するため、gadgets.io.makeRequest メソッド以上のメリットがあります。
が、osapi.http を使えばそんな必要はなく、Gadgets(=Apps) のソースコードをシンプルにより分かりやすく記述することができます。
OpenSocial Pages がサポートする osapi.http のオプションやフィールドは、OpenSocial Pages ドキュメントの Core Gadgte Spec と Core Data Spec に記載しておきました。
OpenSocial Pages for Google Apps で osapi.http API を使えるようにしました。
osapi.http は gadgets.io.makeRequest メソッドに相当するものです。さらに osapi.http は、バッチリクエストにも対応するため、gadgets.io.makeRequest メソッド以上のメリットがあります。
- 1回の API 呼び出しで、複数の外部サーバにまとめてリクエストできます
- 1回の API 呼び出しで、SNS のデータと外部サーバのデータをまとめてリクエストできます
function init() { var batch = new osapi.newBatch() .add('viewer', osapi.people.getViewer()) .add('videos', osapi.http.get({ href: 'http://gdata.youtube.com/feeds/api/users/nakajiman1/uploads?alt=json', format: 'json' })); batch.execute(function(r) { gadgets.log(r.viewer.displayName); // Nobuhiro Nakajima gadgets.log(r.videos.status); // 200 gadgets.log(r.videos.content); // Object { version="1.0", more... } }); } gadgets.setLogLevel(gadgets.log.INFO); gadgets.util.registerOnLoadHandler(init);従来は Viewer のプロフィール情報は opensocial.newFetchPersonRequest メソッドと gadgets.io.makeRequest メソッドを別々に呼び出して、非同期のコールバックのタイミングを制御して、レスポンスをまとめる必要がありました。
が、osapi.http を使えばそんな必要はなく、Gadgets(=Apps) のソースコードをシンプルにより分かりやすく記述することができます。
OpenSocial Pages がサポートする osapi.http のオプションやフィールドは、OpenSocial Pages ドキュメントの Core Gadgte Spec と Core Data Spec に記載しておきました。
2010-08-02
OpenSocial Pages のガジェットは HTML5 で動作することを Pacman で確認してみた
こんばんは。Nobuhiro Nakajima です。
OpenSocial Pages のガジェット(=アプリ)は HTML5 で動作します。そのことを確認するために HTML5 Pacman を OpenSocial Pages で動かしてみました。もちろん、次の動画のとおり、Audio も含めてバッチリ動きます。
OpenSocial Pages のガジェット(=アプリ)は HTML5 で動作します。そのことを確認するために HTML5 Pacman を OpenSocial Pages で動かしてみました。もちろん、次の動画のとおり、Audio も含めてバッチリ動きます。
HTML5 Pacman を OpenSocial Pages のガジェットに移植するにあたり、次のことをしました。
- index.html と packman.js をガジェットXMLにまとめる
- Audio ファイル (ogg and mp3) を Amazon S3 に置く
- modernizr-1.5.min.js を OpenSocial Pages の libs を参照する
- Audio On/Off の設定を、次のとおり、User Preference 経由にする
var prefs = new gadgets.Prefs();
// return localStorage["soundDisabled"] === "true";
return prefs.getBool("soundDisabled");
// localStorage["soundDisabled"] = !soundDisabled();
prefs.set("soundDisabled", !soundDisabled());
OpenSocial Pages は、ガジェットをフレームウィンドウ(iframe)で表示せず、ウェブページにインラインで直接表示する仕組みを採用しています。そして、そのウェブページのドキュメントタイプは HTML5 としています。
そのため OpenSocial Pages では Flash に加えて、HTML5 Pacman のように HTML5 ベースのリッチなアプリを動かすことができます。また、フレームウィンドウ(iframe)の制約を受けないため、アプリは、キーボードのイベントを活用することができます。
アプリの開発者を絶対的に信頼する(もしくは信頼できると検証できる)なら OpenSocial Pages をゲームやエンタメのプラットフォームとして使うことも十分考えられますね。
OpenSocial Pages ならここまで(まだまだ)できる Status Update Gadget をアップデートしました
こんにちは。Nobuhiro Nakajima です。
OpenSocial Pages 向けの Status Update Gadget をアップデートしました。
Gadget のソースコードは、Downloads から入手できます。status-update.xml をダウンロードして、OpenSocial Pages の Control Panel から追加すれば、今すぐ動作を体験できます。
OpenSocial Pages を使うと、PC に加えて、iOS や Android のモバイルブラウザで動作する Twitter のような タイムラインベースのソーシャルアプリを自らの手で、手軽に作成できます。
Status Update Gadget は OpenSocial Pages でここまでできる(まだまだできる)... そのことを証明するための実例です。
OpenSocial Pages 向けの Status Update Gadget をアップデートしました。
Gadget のソースコードは、Downloads から入手できます。status-update.xml をダウンロードして、OpenSocial Pages の Control Panel から追加すれば、今すぐ動作を体験できます。
OpenSocial Pages を使うと、PC に加えて、iOS や Android のモバイルブラウザで動作する Twitter のような タイムラインベースのソーシャルアプリを自らの手で、手軽に作成できます。
Status Update Gadget は OpenSocial Pages でここまでできる(まだまだできる)... そのことを証明するための実例です。
Login
OpenSocial Pages は Google Apps の認証を求めます。OpenSocial Pages は Google Apps と連携することで、OpenSocial Gadget (=ソーシャルアプリ) が Google Apps ドメインのユーザとグループをソーシャルグラフとして扱うことができる仕組みとなっています。
Home
Status Update Gadget の Home View です。Viewer と Viewer がフォローしたユーザのアクティビティをタイムラインで表示します。新着の Status があればライムラインにリアルタイム(ポーリング)で表示します。テキストを入力して Share ボタンをクリックすると、アクティビティを送信します。
アクティビティ中のユーザを表す @ と URL を表す http(s):// は、プログラムが解釈して、リンクを自動的に生成します。View のアクティビティは Delete リンクで削除でき、それ以外のアクティビティは Reply リンクで返信できます。
OpenSocial Pages は Viewer の Friends を Following と位置付けます。そのため、フォローしたユーザのアクティビティは、次のように Activities API を使って取得します。
osapi.activities.get({ userId: '@viewer', groupId: '@friends'})
Mentions
Status Update Gadget の Mentions View です。Google Apps ドメインの全ユーザからの返信(または言及)のあったアクティビティをタイムラインで表示します。
OpenSocial Pages は、返信(または言及)を表す取得範囲を定義しています。そのため、Viewer に返信(または言及)したアクティビティは、次のように Activities API を使って取得します。
osapi.activities.get({ userId: '@viewer', groupId: '@mentions' })
Profile
Status Update Gadget の Profile View です。指定したユーザのアクティビティをタイムラインで表示します。Follow ボタン(または Unfollow ボタン)をクリックすると、そのユーザをフォロー(または解除)できます。
OpenSocial Pages は Viewer の Friends を Following と位置付けます。そのため、ユーザをフォロー(または解除)するときは、次のように Peopel API を使います。
osapi.people.create({ userId: '@viewer', groupId: '@friends', person: { id: user.id } })
osapi.people.delete({ userId: '@viewer', groupId: '@friends', person: { id: user.id } })
Following
Status Update Gadget の Following View です。指定したユーザがフォローしているユーザを表示します。このとき、各ユーザの最新のアクティビティも合わせて表示します。
OpenSocial Pages は Viewer の Friends を Following と位置付けます。そのため、指定したユーザをフォローしているユーザは、次のように Peopel API を使って取得します。
osapi.people.get({ userId: user.id, groupId: '@friends' })
Groups
Status Update Gadget は、各 View のヘッダで、Group の選択ボックスを表示し、Groups View に移動するようにしています。
OpenSocial Pages は Google Apps のドメインを Owner、そのグループを Owner の Group に位置付けます。そのため、Google Apps ドメインのグループは、次のように Groups API を使って取得します。
osapi.groups.get({ userId: '@owner' })
Domain
Status Update Gadget の Groups View です。Google Apps ドメインの全ユーザのアクティビティをタイムラインで表示します。
OpenSocial Pages は Google Apps のドメインを Owner、そのユーザを Owner の Friends に位置付けます。そのため、Google Apps ドメインの全ユーザのアクティビティは、次のように Activities API を使って取得します。
osapi.activities.get({ userId: '@owner', groupId: '@friends'})
Domain Members
Status Update Gadget の Members View です。Google Apps ドメインの全ユーザを表示します。このとき、このとき、各ユーザの最新のアクティビティを表示します。また、各ユーザをフォローしているかどうかも合わせて表示します。
OpenSocial Pages は Google Apps のドメインを Owner、そのユーザを Owner の Friends に位置付けます。そのため、Google Apps ドメインの全ユーザは、次のように People API を使って取得します。
osapi.people.get({ userId: '@owner', groupId: '@friends' })
Group
Status Update Gadget の Groups View です。選択したグループに参加するユーザのアクティビティをタイムラインで表示します。
OpenSocial Pages は Google Apps のドメインを Owner、そのグループを Owner の Group に位置付けます。そのため、指定したグループのアクティビティを取得するときは、Activities API に対して、次の取得範囲を指定します。
osapi.activities.get({ userId: '@owner', groupId: group.id })
Group Members
Status Update Gadget の Members View です。選択したグループに参加するユーザを表示します。このとき、各ユーザの最新のアクティビティを表示します。また、各ユーザをフォローしているかどうかも合わせて表示します。
OpenSocial Pages は Google Apps のドメインを Owner、そのユーザを Owner の Friends に位置付けます。そのため、そのため、指定したグループのユーザを取得するときは、People API に対して、次の取得範囲を指定します。
OpenSocial Pages は Google Apps (スタンダードも可) をお持ちであれば、何も準備することなしにすぐ使い始めることができます。この機会にぜひお試しください。また OpenSocial Pages の応用にご関心がございましたら Nobuhiro Nakajima までお問い合わせください。熱烈サポートいたします。osapi.people.get({ userId: '@owner', groupId: group.id })
登録:
投稿 (Atom)