我在 WPF 应用程序中使用 C# Twitterizer 对 Twitter 用户进行身份验证,以便我可以将推文发布到他们的流中。(但这无关紧要,因为问题是关于 API 本身)。
我不想创建新的登录界面,我想使用嵌入在 WebBrowser 控件中的 Twitter 登录页面。Twitter 是否支持与Facebook 相同的身份验证方式,用户登录到常规 FB 登录页面并在回调 URL中发回访问令牌?或者发送用户名和密码是获取访问令牌的唯一方法(在 Twitter 中)?!
我在 WPF 应用程序中使用 C# Twitterizer 对 Twitter 用户进行身份验证,以便我可以将推文发布到他们的流中。(但这无关紧要,因为问题是关于 API 本身)。
我不想创建新的登录界面,我想使用嵌入在 WebBrowser 控件中的 Twitter 登录页面。Twitter 是否支持与Facebook 相同的身份验证方式,用户登录到常规 FB 登录页面并在回调 URL中发回访问令牌?或者发送用户名和密码是获取访问令牌的唯一方法(在 Twitter 中)?!
这是一个与 Twitter 一起工作的 Oauth 1.0a 类,它允许你想要什么。
还有一个简单的例子展示了如何使用这个类。
代码如下所示:
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 浏览器。如果您有缓存的数据,则不需要显示该表单。
是的,Twitter 支持与 Facebook 相同的身份验证方式,称为 OAuth。Facebook 使用 OAuth 2,Twitter 使用 OAuth 1.0a
看看 Spring.NET Social Twitter:http ://springframework.net/social-twitter/ 它为您尝试做的事情提供了示例。