我所試圖做的事:通用的OAuth庫C#
寫Generic Library in C#
處理OAuth的流程的每一個服務(就像Twitter的,LinkedIn和Foursquare)。最難的部分是,我想要simulate all the user input in code
,這樣就不需要用戶操作來點擊像「好吧,我會允許它」的按鈕,甚至不用寫用戶名/密碼。
懷疑我到目前爲止有:
1 - 什麼在Twitter的API的authenticity_token
的使用情況如何?
2 - 所有服務使用什麼因素,以便我可以實現OAuth Flow的通用用法。例如,我發現第一步很容易使通用方法執行。我所要做的就是更改webRequest的URL,並且BAM擁有請求令牌。
3 - 如何獲取每個服務的驗證器?例如,在LinkedIn Service
中,我能夠解析一個頁面來獲取此值,但我找不到這個用於twitter API的verifier
。即使在瀏覽器中授權我的應用程序時,我在流程中的任何HTML或任何生成JavaScript的JavaScript中都看不到Verifier
。
觀察:
1 - 我知道有OAuth的圖書館很多在那裏,像this或that的,但沒有圖書館,讓我做什麼,我想,那就是在不提示用戶輸入的情況下對用戶進行身份驗證和授權。
2 - 我無法通過任何方式要求用戶輸入。所有用於身份驗證的用戶名和密碼等值都將進行硬編碼,並且每個用戶都將對此請求使用相同的帳戶。
3 - 我也知道,在這裏還有其他的帖子,我寫了幾乎相同的疑問,我要重新發布的原因是爲了讓它更清晰和更新鮮。
4 - 對不起,有任何英語錯誤或對概念的誤解提前。
Basic代碼示例:
這一點,例如,我使用的方法(即avaible國外廣泛的網絡)用於獲取請求令牌的任何服務。我所要做的就是將REQUEST_TOKEN
的值更改爲用於服務的特定網址,因此我可以獲得LinkedIn,Twitter或Foursquare的令牌。但我無法在其他步驟中應用相同的流程。
public string AuthorizationLinkGet()
{
string ret = null;
string response = oAuthWebRequest(Method.GET, REQUEST_TOKEN, String.Empty);
if (response.Length > 0)
{
//response contains token and token secret. We only need the token.
NameValueCollection qs = HttpUtility.ParseQueryString(response);
if (qs["oauth_callback_confirmed"] != null)
{
if (qs["oauth_callback_confirmed"] != "true")
{
throw new Exception("OAuth callback not confirmed.");
}
}
if (qs["oauth_token"] != null)
{
ret = AUTHORIZE + "?oauth_token=" + qs["oauth_token"];
}
}
return ret;
}
你確定嗎? 那麼,無論如何,我不需要mannualy呢?因爲,我剛剛在linkedin上個月完成了與用戶(用戶名,密碼)連接而不提示任何用戶輸入。 「這是否使我成爲黑客?」只是在開玩笑,所以你說我不能爲每項服務做到這一點? – 2012-01-12 17:32:04
我不是提供者,我將成爲消費者,使用服務的API。 – 2012-01-12 17:35:38
OAuth SDK itseld不允許你這麼做,因爲你不會這樣做,用戶應該批准它。理論上你只需要做一次。 – 2012-01-12 19:07:03