2014-01-08 4 views
0

В настоящее время я пытаюсь использовать DotNetOpenAuth 1 потребитель для интеграции с сервисом, который требует нескольких специальных адаптаций. ServiceProvider (VitaDock) требует: подписиКак расширить библиотеку DotNetOpenAuth для использования с OAuth 1.0 для работы со специальным serviceprovider

1) сообщение, которое будет вычислено с HMAC-SHA256 2), параметры обратного вызова не должны присутствовать в запросах 3) Нет callback_confirmation не будет обеспечен 4) То, что метки времени миллисекунд с 1 января. (Вместо секунд) 5) параметр Realm не следует использовать 6) Nonce быть 36 символов

мне удалось получить простое работающее решение по реализации этих 2 новых классов 1) VitaDockConsumer, который наследует от MessageHandler, который inherrits от DotNetOpenAuth.OAuth.Consumer и 2) VitaDockMessageHandler который наследуется от DotNetOpenAuth.OAuth.OAuth1HttpMessageHandlerBase

Мои вопросы:

1) Мои решения "чувствует себя грязным", потому что она нарушает Wi й СУХОЙ (не повторяй себя - или в этом случае не повторяй другого). В базовых классах есть много полезных вспомогательных методов, которые обрабатывают кодирование и т. Д., Но поскольку они определены как частные, внутренние или защищенные, я не смог воспользоваться, и поэтому я обнаружил, что сам «я» нуждаюсь в том, чтобы реализовать одну и ту же функциональность дважды или сделать прямую копию. Мой вопрос: есть ли еще один путь для достижения этого. Существуют ли другие классы, которые я должен расширить? другие образцы?

2) Единственный способ, с помощью которого можно решить, что мое решение использует временные метки, которые обозначают миллисекунды, а не секунды, - это изменение OAuth1HttpMessageHandlerBase.cs в библиотеке. Мой вопрос: есть ли другой способ сделать это?

Я новичок в DotNetOpenAuth, поэтому вся помощь будет принята с благодарностью. Я рассматриваю вопрос о том, может ли маршрут вносить новую версию OAuth1MessageHanderBase, где временная метка и другие вспомогательные функции являются общедоступными или есть веские причины для сохранения этих вспомогательных методов в частной форме?

Я не размещал свой код, так как он имеет длину более 700 строк, но, конечно, будет рад сделать это, если потребуется.

ответ

0

После некоторых расследований .. Наконец-то я нашел способ заставить DotNetOpenAuth работать с VitaDock. Я решил расширить Oauth1 MessageHandler и внести различные изменения, необходимые для совместимости этого провайдера.

В случае, если вы пришли к ней с подобным вопросом, вы можете захотеть, чтобы проверить мое решение для изменения DNOA

https://github.com/DotNetOpenAuth/DotNetOpenAuth/pull/321

и небольшой пример, показывающий, как использовать DNOA с VitaDock. Он может получать показания температуры приема с портала VitaDock. Его можно было бы легко распространить, чтобы получить другую информацию.

https://github.com/karstenols/VitaDock-DNOA-Sample