【发布时间】:2011-09-06 17:27:06
【问题描述】:
所以,我使用 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
根据谷歌的文档,请求是由容器根据OAuth signing processHMAC-SHA1方法签名的。
在服务器端,我收到以下请求:
然后我根据 Google 应该使用的相同 OAuth 规范签署此请求,但签名不匹配。
我已经尝试使用 2 个不同的库对请求进行签名:
- 我们自己开发的 .Net 库,用于对 Gmail IMAP OAuth 授权请求进行签名(它使用相同的签名方法,并且在那里工作得很好)。
- 贡献的 opensocial 库之一 (http://code.google.com/p/opensocial-net-client/)
两个库都产生相似的签名基本字符串。然而,奇怪的是,它们产生了不同的签名,并且这些签名都与谷歌在 oauth_signature 参数中发送的签名不匹配!
小工具开发人员,我希望你们中的某个人比我更幸运,并且使这种签名验证方法有效。请告诉我我在这里做错了什么。
提前致谢,
布鲁
【问题讨论】:
-
看看这个它处理类似于 urs google.com/support/forum/p/apps-apis/… 的问题
-
@Pandiya Chendur 不幸的是,我是那个 GoogleApps API 帮助论坛的主题发起人...
标签: c# asp.net oauth opensocial gmail-contextual-gadgets