我已经搜索了高和低的答案这个问题。基本上,我创建了一个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=)? –