【问题标题】:Twitter API Safe AuthenticationTwitter API 安全认证
【发布时间】:2012-04-22 09:46:09
【问题描述】:

我在 WPF 应用程序中使用 C# Twitterizer 对 Twitter 用户进行身份验证,以便我可以将推文发布到他们的流中。 (但这无关紧要,因为问题在于 API 本身)。

我不想创建一个新的登录界面,我想使用嵌入在 WebBrowser 控件中的 Twitter 登录页面。 Twitter 是否支持与 Facebook 相同的身份验证样式,用户登录到常规 FB 登录页面并在 回调 URL 中发回访问令牌?或者发送用户名和密码是获取访问令牌的唯一方法(在 Twitter 中)?!

【问题讨论】:

  • 你可以,呃,把粗体调低一点;)
  • 抱歉 :) 只是我认为当问题的关键点突出显示时更容易快速获得想法

标签: c# twitter twitter-oauth twitterizer


【解决方案1】:

这里是an Oauth 1.0a class,它适用于 Twitter,并允许你想要什么。

还有a simple example 展示了如何使用该类。

代码如下所示:

OAuth.Manager oauth;
AuthSettings settings;
public void Foo()
{
    oauth = new OAuth.Manager();
    oauth["consumer_key"] = TWITTER_CONSUMER_KEY;
    oauth["consumer_secret"] = TWITTER_CONSUMER_SECRET;

    settings = AuthSettings.ReadFromStorage();
    if (VerifyAuthentication())
    {
        Tweet("Hello, World");
    }
}

private void Tweet(string message)
{
    var url = "http://api.twitter.com/1/statuses/update.xml?status=" + message;
    var authzHeader = oauth.GenerateAuthzHeader(url, "POST");
    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "POST";
    request.PreAuthenticate = true;
    request.AllowWriteStreamBuffering = true;
    request.Headers.Add("Authorization", authzHeader);
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        if (response.StatusCode != HttpStatusCode.OK)
        {
            ...
        }
    }
}

private bool VerifyAuthentication()
{
    if (!settings.Completed)
    {
        var dlg = new TwitterAppApprovalForm(); // your form with an embedded webbrowser
        dlg.ShowDialog();
        if (dlg.DialogResult == DialogResult.OK)
        {
            settings.access_token = dlg.AccessToken;
            settings.token_secret = dlg.TokenSecret;
            settings.Save();
        }

        if (!settings.Completed)
        {
            MessageBox.Show("You must approve this app for use with Twitter\n" +
                            "before updating your status with it.\n\n",
                            "No Authorizaiton for TweetIt",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
            return false;
        }
    }

    // apply stored information into the oauth manager
    oauth["token"]           = settings.access_token;
    oauth["token_secret"]    = settings.token_secret;

    return true;
}

TwitterAppApprovalForm 是样板文件,包含在示例中。当您没有缓存的 access_token 和 token-secret 时,该表单会弹出,托管一个显示 Twitter 授权表单的嵌入式 Web 浏览器。如果您有缓存数据,则不需要显示该表单。

【讨论】:

    【解决方案2】:

    是的,Twitter 支持与 Facebook 相同的身份验证方式,称为 OAuth。 Facebook 使用 OAuth 2,而 Twitter 使用 OAuth 1.0a

    看看 Spring.NET Social Twitter:http://springframework.net/social-twitter/ 它为您正在尝试做的事情提供示例。

    【讨论】:

      猜你喜欢
      • 2010-10-25
      • 2016-01-20
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多