/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