ユーザーの Google アカウントで Fusion Table API を介して Fusion Tables に接続する Google ガジェットがあります。SELECT と INSERT を実行します。
OAuth1 (opensocial の shindig ライブラリ) を使用してガジェットを作成しました。非推奨バージョンの Fusion Table API では問題なく動作しました。新しい PAPI に移行すると、OAuth2 による認証が不要になるため、select q は正常に機能します。ただし、INSERT の場合は必要です。opensocial のドキュメントは完全には更新されていません:http://docs.opensocial.org/display/OSREF/OpenSocial+Specification+Considerations
OAuth2 を使用して挿入を正常に実行する方法がわかりません。ドメイン レベルで読み取り/書き込みを行う API 権限があり、ユーザーには Fusion テーブルに対する所有者権限があります。
「Invalid Credentials」というエラーが表示されますが、かなりあいまいで、その理由がわかりません。
ガジェット ヘッダーは次のとおりです。
<OAuth>
<Service name="google">
<Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" />
<Request url="https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.googleapis.com/auth/fusiontables%20https://docs.google.com/feeds/default/private"
method="GET" />
<Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" />
</Service>
</OAuth>
正確な更新方法がわからないため、別のヘッダーを追加しました。
<OAuth2>
<Service name="google">
<Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauth2callback" />
</Service>
</OAuth2>
電話をかけるときは、次のことを行います。
options = {};
options[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
options[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
options[gadgets.io.RequestParameters.POST_DATA] = postData;
options[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.OAUTH2;
options[gadgets.io.RequestParameters.HEADERS] = {'Authorization':'{encrypted fusiontable key}'}; //not sure if this helps but its extra
options[gadgets.io.RequestParameters.OAUTH_SERVICE_NAME] = "google";
options[gadgets.io.RequestParameters.OAUTH_USE_TOKEN] = "always";
URL = https://www.googleapis.com/fusiontables/v1/query?key={encrypted fusiontable key} &client_id={id number}”;
postData=”sql=INSERT…”;
gadgets.io.makeRequest(URL, handlerWrapper, options);
ありがとう!