2014-01-08 26 views
0

我目前正在嘗試使用DotNetOpenAuth 1個消費者與需要一些特殊適配的服務提供者集成。所述的ServiceProvider(VitaDock)要求:如何擴展DotNetOpenAuth庫,以便與OAuth 1.0一起使用,以便與特殊服務提供商合作

1)消息簽名與HMAC-SHA256 2)即回調參數必須不存在於沒有callback_confirmation將提供 4請求 3))該時間戳是毫秒來計算自1月1日起。 (而不是秒) 5)域參數不應該被用來 6)隨機數爲36個字符

我已設法通過實施這些2新類 1)VitaDockConsumer從的MessageHandler繼承得到一個簡單的工作溶液,其從DotNetOpenAuth.OAuth.Consumer和 2)VitaDockMessageHandler從DotNetOpenAuth.OAuth.OAuth1HttpMessageHandlerBase

繼承

我的問題inherrits是:

1)我的解決方案 「感覺髒」,因爲它打破了無線(不要重複自己 - 或者在這種情況下不要重複其他人)原則。在基類中有許多有用的幫助方法來處理編碼等,但由於它們被定義爲私有的,內部的或受保護的,所以我沒有能夠利用,因此我發現自己需要兩次實現相同的功能或者直接複製。我的問題是:是否有另一條途徑來實現這一點。我應該擴展其他類嗎?其他模式?

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

相關問題