C# 如何在Windows窗体应用程序c中验证Twitter的用户名和密码#

C# 如何在Windows窗体应用程序c中验证Twitter的用户名和密码#,c#,c#-4.0,twitter,C#,C# 4.0,Twitter,我需要以编程方式检查Twitter帐户的用户名/密码是否有效 代码 我创建了一个新帐户,我的电子邮件已验证。我现在可以用我的用户名和密码登录了。当我尝试使用上述代码时。我得到了未经授权的例外 我遗漏了什么吗?你用过OAuth吗 据我所知,Twitter只接受已经OAuth处理过的请求 见: 根据这一点,您需要通过身份验证才能验证凭据 我看不到您的代码中有使用OAuth进行身份验证的地方,所以除非它隐藏在某个地方,否则我不希望您的代码工作 事实上,Twitter是一个痛苦的API,并且可能会随着

我需要以编程方式检查Twitter帐户的用户名/密码是否有效

代码

我创建了一个新帐户,我的电子邮件已验证。我现在可以用我的用户名和密码登录了。当我尝试使用上述代码时。我得到了未经授权的例外

我遗漏了什么吗?

你用过OAuth吗

据我所知,Twitter只接受已经OAuth处理过的请求

见:

根据这一点,您需要通过身份验证才能验证凭据

我看不到您的代码中有使用OAuth进行身份验证的地方,所以除非它隐藏在某个地方,否则我不希望您的代码工作

事实上,Twitter是一个痛苦的API,并且可能会随着时间的推移而改变(1.0到1.1的跳跃是一次完全的重写)


因此,我建议使用一个库,让他们担心这一点。我使用TweetSharp。遗憾的是,主要开发人员已经离开了该项目,但它仍然有效。

看起来Twitter API已经更新。您提供的代码不再有效。

首先,尝试使用不同的API url:您能告诉我们如何在Window Forms应用程序中获取_consumerKey、_ConsumerCret、_accessToken和_accessTokenSecret吗?您可以通过创建一个应用程序在dev.twitter.com上获取它。说真的,文档很好,为什么不给自己一两个小时来彻底阅读呢。你知道,为了克里特应用程序,有必要提供网站和我不;如果你还没有URL,就在这里放一个占位符,但记住以后再更改它
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;
}