Google Friend Connect を埋め込んだサイトをブックマークレットで乗っ取って借用して自作のガジェットを動かす

Google Friend ConnectJavaScript埋め込むだけでソーシャルアプリを動かすことができてとてもらくちんですね。ただ、いざアプリ(ガジェット)を作って自分で試そうとしても、Google Friend Connect を埋め込んだサイトに誰も登録してくれなければ、ソーシャルグラフの情報を使ったアプリはテストすらできません。テストのためだけにダミーアカウントを作るのも寂しいものです。

これをつかうと、すでにソーシャルグラフが完成している他のサイトのGoogle Friend Connect乗っ取り借用し、自分のガジェットを試すことができます。

http://gfcjack.googlecode.com/svn/trunk/bookmarklet.html

利用方法

上記サイトの「opensocial gadget url」に自分が作ったgadgetのXMLファイルを置いたサイトのURLを入れて、createボタンを押すとブックマークレットへのリンクが自動作成されます。

ブックマークレットを登録して、Google Friend Connect (In Page APIでなくてガジェット/サイドバーでも可) を埋め込んだサイトで起動します。ページにオーバーレイしてフレームが現れ、その中でガジェットが表示されます。

試しにPatrickのサイトで勝手にFriendIntroducerを起動してみる

こんな感じで描画表示されます。

ただしGFC APIで埋め込んだガジェットからのrequestNavigateToがうまく行ってないので肝心の紹介文が書けませんでしたが、生成されたbookmarkletのパラメータに「presentation=canvas」としてを追加して直接canvasビューを立ち上げれば行けます。詳細はgoogle codeのソース参照。

動作について

ガジェット内で取得できるOwnerやOwnerFriendsの情報はそのブックマークレットを起動したサイト/サイトへの登録者になります。Viewer/ViewerFriendsはそのまま自分ですが、ViewerFriendsはGFCの場合そのサイトに登録した人の間だけになる仕様だったはずですね。自作/他作、サイトの所有者との信頼関係は問いません。寄生ガジェット。

ガジェット以外にも、OpenSocialAPIを書いたスクリプト(JavaScriptファイル)をどこかに置いておき、Google Friend Connect APIのIn Page APIを使ってOpenSocial APIの呼び出しができます。この場合、「opensocial script url」にスクリプトを置いておいたURLを指定してブックマークレットを生成します。スクリプトの例はこちら

補足

ただ、作っては見ましたが、これは倫理的にちょっと問題がある可能性があります。ソーシャルデータのフェッチだけなら別にGoogleが面倒見てくれるのでサーバに負荷かかるとしてもたかが知れたものでしょうが、内部でSIGNED makeRequestしたりActivityを流したりPersistに永続データを保存するようなスクリプトについては、既存のサイト内で動かしているアプリ/ガジェットに影響が出たりしないとは言えないですね。程々にした方がいいです。

逆に言うと、こうやってユーザ側で勝手にサイトを乗っ取るのはOpenSocialのガジェット側としては想定の範囲内であるべきで、それに動作が左右されるようなものはそもそもよくないということでもあるかもしれません。