Почему бы просто не использовать все OAuthConsumer
, а не только компонент HMAC-SHA1? Это хорошо используемый, хорошо протестированный код, который используется в различных приложениях. Я бы сказал, что OAuthConsumer
- это "хорошо известно".
Маловероятно, что ваш поставщик услуг будет неправ (если вы не единственный клиент).
Это оставляет, как вы используете криптографический код.
Типичные проблемы, с которыми я сталкивался при подписи OAuth:
- Не сортировать параметры
- Отсутствуют, казалось бы, неважные параметры
- Не отделяет параметры от базового URL
- Использование неправильного метода HTTP
- Перенаправления или псевдонимы. Вы подключаетесь к server.com, но удаленная сторона считает себя api.server.com
Еще одна вещь, которую вы можете сделать, это использовать тот же клиентский код для подключения другой службы OAuth, например, Twitter. Если ваш код надежно создает правильную подпись для Twitter, то, скорее всего, он будет работать правильно для любого другого сервиса. Это (вероятно) будет означать, что проблема, как вы предполагаете, связана с вашим обслуживанием. Я говорю «вероятно», поскольку каждая реализация OAuth, похоже, имеет свои причуды.