我已經搜索了高和低的答案這個問題。基本上,我創建了一個C#應用程序(在它的第一個化身中)將使用OAuth 1.0a的Projectplace API進行身份驗證。目前,它返回oauth_verifier到地址欄,但是當我使用var response = request.GetResponse();
方法,它返回oauth_token
和oauth token_secret
我發送,擺在首位的授權的一部分。從回調中獲取oauth_verifier
也許我誤解這個過程應該是在上班的路上,但我讀過的每一個答案在那裏,沒有人可以解決這個問題。在回調URL加載後,在認證頁面上輸入我的用戶名和密碼之後,您是否必須或有可能從地址欄(或可以獲取的任何地方)提取驗證碼?
我相信OAuth1.0a要求的驗證碼來獲取訪問令牌,我不能找到一個簡單的方法來拉動的驗證碼。
我真的很感激任何幫助,它的駕駛我堅果!
更新日期03.12.12
感謝您的回覆!
從本質上講,我是客戶端嘗試以下發送此初始請求後檢索從OAuth的提供商oauth_verifier,我的下一步就是授權然後檢索驗證。我嘗試以下,希望如你所說,像在深水的一端在這裏:)游泳
//Generate string for initiation request.
requestUri.AppendFormat("?oauth_consumer_key={0}&", consumerKey);
requestUri.AppendFormat("oauth_nonce={0}&", nonce);
requestUri.AppendFormat("oauth_timestamp={0}&", timeStamp);
requestUri.AppendFormat("oauth_signature_method={0}&", "HMAC-SHA1");
requestUri.AppendFormat("oauth_version={0}&", "1.0");
requestUri.AppendFormat("oauth_signature={0}", signature);
var request = (HttpWebRequest)WebRequest.Create(new Uri(requestUri.ToString()));
request.Method = WebRequestMethods.Http.Get;
var response = request.GetResponse();
var queryString = new StreamReader(response.GetResponseStream()).ReadToEnd();
var parts = queryString.Split('&');
var token = parts[1].Substring(parts[1].IndexOf('=') + 1);
var tokenSecret = parts[0].Substring(parts[0].IndexOf('=') + 1);
var queryString2 = String.Format("oauth_token={0}", token);
//AUTHORIZE WITH CREDENTIALS FROM USER.
var authorizeUrl = "https://api.projectplace.com/authorize?" + queryString;
Process.Start(authorizeUrl);`
//TRY AND READ VERIFICATION STRING AFTER AUTHORIZATION REDIRECT`
String oauthVerifier = HttpContext.Current.Request.QueryString["oauth_verifier"];
不幸的是,一旦我做到了這一點,我似乎無法得到一個返回的查詢字符串顯示oauth_verifier我我清楚地看到地址欄中顯示的字符串。 (是的,這是一種非常新穎的描述方式,我正在學習代碼以及OAuth:P)。
感謝您的幫助迄今。我試圖運行上述,但它只是說,「對象引用未設置爲對象的實例」。
另外,如果我嘗試使用前面的代碼來獲取查詢字符串/響應?從使用以下幾行的啓動請求中,querystring3只是回到了空白......非常令人沮喪! :)
var queryString3 = new StreamReader(response.GetResponseStream()).ReadToEnd();
var parts3 = queryString3.Split('&');
當你說「在地址欄中輸入」你的意思是它是一個查詢字符串參數(例如http://yoursite.com?oauth_verifier=)? –