Итак, я использую 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;
Я получил ConsumerKey и ConsumerSecret гаджета с сайта https://www.google.com/gadgets/directory/verify
Согласно документации Google, запрос подписывается контейнером в соответствии с Процесс подписи OAuth Метод HMAC-SHA1.
На стороне сервера я получаю следующий запрос:
Затем я подписываю этот запрос в соответствии с той же спецификацией OAuth, которую должен использовать Google, но подписи не совпадают.
Я уже пытался подписать запрос, используя 2 разные библиотеки:
- Наша доморощенная библиотека .Net, которая используется для подписи запросов на авторизацию Gmail IMAP OAuth (которая использует тот же метод подписи, и там он работает просто отлично).
- Одна из предоставленных библиотек opensocial (http://code.google.com/p/opensocial-net-client/)
Обе библиотеки производят аналогичные базовые строки подписи. Однако, как ни странно, они производят разные подписи, и ни одна из этих подписей не совпадает с той, которую отправил Google в параметре oauth_signature!
Уважаемые разработчики гаджетов, надеюсь, кому-то из вас повезло больше, чем мне, и этот метод проверки подписи заработал. Пожалуйста, скажите мне, что я делаю неправильно здесь.
Заранее спасибо,
буру