G-StorageにOpenSocialの外部サーバ機能を追加してみた

/storage/opensocialを/opensocial/[username]として、サービスプロバイダの署名つきリクエストを許可するようにした。
 
G-Storage
http://g-storage.appspot.com/
 
makeRequest関数を使うと、サービスプロバイダがプロキシになってOAuth認証パラメータをくっつけてGAEにリクエストを投げる。
リクエストを受け取ったGAEでサービスプロバイダのくっつけたシグネチャが正しいかチェック。
正しければ認証OK。
公開鍵IDはxoauth_public_key、xoauth_signature_publickeyの順でチェックするようにした。
 
データの持ち方はファイル形式で、Key-Value
もう少し使い易く出来ないか考え中。
 
今のところ対応させたサービスプロバイダは、mixi.jpとgoo.ne.jpの2つ。
 

リクエストサンプル

mixiの場合はこんな感じ。

function doOAuthRequest() {
	var url = "http://g-storage.appspot.com/opensocial/root/?format=json&method=ls";
	var params = {};
	params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
	gadgets.io.makeRequest(url, function(response) {
		// do something...
		alert(response.text);
	}, params);
}

 

参考URL

mixi Developer Center (ミクシィ デベロッパーセンター) » 外部サーバを呼び出してみよう
http://developer.mixi.co.jp/appli/pc/lets_enjoy_making_mixiapp/require_servers
 
署名リクエスト - goo Developer's Kitchen
http://developer.home.goo.ne.jp/document/%E7%BD%B2%E5%90%8D%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88
 
署名付きリクエストで外部サーバへデータを保存する - プログラマー、再起動中
http://d.hatena.ne.jp/naoto5959/20090515/1242368665