そのgadgets.io.makeRequest(url, callback, params)
ため、Gmail コンテキスト ガジェットからリクエストを作成し、これらのリクエストをサーバー側で検証するために使用しています。
明確にするために、ガジェット側で次の makeRequest パラメータを使用しています。
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;
params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
params["OAUTH_SERVICE_NAME"] = "HMAC";
params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
https://www.google.com/gadgets/directory/verify
からガジェットのconsumerKeyとconsumerSecretを取得しましたGoogleのドキュメントによると、リクエストはOAuth署名プロセスHMAC-SHA1メソッド
に従ってコンテナによって署名されています。
サーバー側では、次のリクエストを受け取ります。
次に、Google が使用するはずの同じ OAuth 仕様に従ってこのリクエストに署名していますが、署名が一致しません。
私はすでに2つの異なるライブラリを使用してリクエストに署名しようとしました:
- Gmail の IMAP OAuth 承認のリクエストに署名するために使用される自社開発の .Net lib (同じ署名方法を使用し、そこでは問題なく動作します)。
- 寄贈されたオープンソーシャル ライブラリの 1 つ ( http://code.google.com/p/opensocial-net-client/ )
どちらのライブラリも同様の署名ベース文字列を生成します。しかし、奇妙なことに、それらは異なる署名を生成し、これらの署名のいずれも oauth_signature パラメータで Google から送信されたものと一致しません!
ガジェット開発者の皆さん、あなたの誰かが私より幸運で、この署名検証方法が機能することを願っています。ここで何が間違っているのか教えてください。
前もってありがとう、
ぶる