赏金问题
我正在使用 c# 3.5 窗口窗体应用程序。我正在使用已接受的答案中提到的代码。我收到以下错误
远程服务器返回错误:(401) 未经授权。
验证用户名和密码的示例代码将非常感激
赏金问题结束
我有一个具有以下用例的应用程序:当用户第一次开始使用该应用程序时,他输入他的用户名和密码。然后,在更晚的阶段,应用程序可能会更新他的状态。
目前我正在使用 Twitterizer,但我相信这个问题超出了我正在使用的特定库的范围。以下是两行相关代码:
Twitter twitter = new Twitter("username", "password", "source");
twitter.Status.Update("update");
如果用户名/密码不正确,Twitter 对象的构造不会引发异常。这可能是因为此时没有发送任何内容。另一方面,如果用户名/密码无效,状态更新确实会引发异常。
我的问题是我想在用户输入时验证用户名/密码,而不是在尝试发布更新时验证用户名/密码。
如何在不发布任何内容(在 Twitterizer 或其他方式中)的情况下验证用户名/密码?
快速浏览一下 peSHIr 提到的 verify_credentials API,我编写了一个小例程,似乎可以解决问题。虽然已经晚了,但我测试了几次并且似乎有效。
在我的函数中,如果我得到 HttpResponseCode.OK,我将返回 true,如果我得到其他任何内容或抛出异常,我将返回 false。如果 twitter 不喜欢该 uid/密码,则会抛出异常并显示 401 错误(未授权。)
public bool CheckTwitterCredentials(string UserName, string Password)
{
// Assume failure
bool Result = false;
// A try except block to handle any exceptions
try {
// Encode the user name with password
string UserPass = Convert.ToBase64String(
System.Text.Encoding.UTF8.GetBytes(UserName + ":" + Password));
// Create our HTTP web request object
HttpWebRequest Request =
(HttpWebRequest)WebRequest.Create("http://twitter.com/account/verify_credentials.xml");
// Set up our request flags and submit type
Request.Method = "GET";
Request.ContentType = "application/x-www-form-urlencoded";
// Add the authorization header with the encoded user name and password
Request.Headers.Add("Authorization", "Basic " + UserPass);
// Use an HttpWebResponse object to handle the response from Twitter
HttpWebResponse WebResponse = (HttpWebResponse)Request.GetResponse();
// Success if we get an OK response
Result = WebResponse.StatusCode == HttpStatusCode.OK;
} catch (Exception Ex) {
System.Diagnostics.Debug.WriteLine("Error: " + Ex.Message);
}
// Return success/failure
return Result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)