c# - Twitter:在 C# 中验证用户名和密码

标签 c# api c#-4.0 twitter c#-3.0

赏金问题

我正在使用 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/password,将抛出 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;
}

关于c# - Twitter:在 C# 中验证用户名和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1211128/

相关文章:

c# - 在用户界面和控制台应用程序中使用 Task.Yield() 之间的区别

sql - 以编程方式生成 SQL 脚本以在没有 PRIMARY 语句的情况下创建数据库..使用脚本程序

c# - 使用动态关键字转换泛型类型是否会导致装箱?

c# - 在 C# 中使用有限数量的作业和有限数量的事件线程进行线程化

c# - 我怎样才能找出哪个对象创建了这个对象

c# - 查看X509Certificate2是否被撤销?

c# - 如何访问 ItemsControl 的子项?

ios - 在 iOS 应用程序中从 Junos Pulse 获取用户凭据

c++ - 如何使用 Window 的 C++ 图形 (GDI+) 库移动对象?

javascript - API 集群 - 为默认端点使用自定义组配置