Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# twitterapi安全认证_C#_Twitter_Twitter Oauth_Twitterizer - Fatal编程技术网

C# twitterapi安全认证

C# twitterapi安全认证,c#,twitter,twitter-oauth,twitterizer,C#,Twitter,Twitter Oauth,Twitterizer,我正在WPF应用程序中使用C#Twitterizer对Twitter用户进行身份验证,这样我就可以将推文发布到他们的流中。(但这无关紧要,因为问题是关于API本身的) 我不想创建一个新的登录界面,我想使用嵌入在WebBrowser控件中的Twitter登录页面。Twitter是否支持与Facebook相同的身份验证方式,即用户登录到常规的FB登录页面,并将访问令牌发送回回调URL?或者发送用户名和密码是获取访问令牌(在Twitter中)的唯一方法 是的,Twitter支持与Facebook相同的

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


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

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

看看Spring.NET社交推特: 它为您尝试做的事情提供了示例。

这是一个与Twitter配合使用的示例,它允许您做您想要的事情

还有一个示例演示了如何使用该类

代码如下所示:

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;
}

TwitterApprovalForm是样板文件,包含在示例中。当您没有缓存的access_令牌和令牌机密时,该表单会弹出,托管一个显示Twitter授权表单的嵌入式webbrowser。如果您有缓存的数据,则不需要显示该表单。

您可以,呃,将粗体字调小一点;)很抱歉:)我只是觉得当问题的关键点被突出显示时,更容易快速获得想法