В настоящее время я пытаюсь использовать 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 строк, но, конечно, будет рад сделать это, если потребуется.