使用twitter登录.使用linq2twitter的OAuth或Xauth
本文关键字:使用 Xauth OAuth linq2twitter twitter 登录 | 更新日期: 2023-09-27 18:28:39
在过去的几天里,我一直在努力解决这个问题。现在,我有一个简单的c#控制台应用程序。最终,我想制作一个小库,在移动应用程序中重复使用,以便登录推特,但这是以后的问题。此时此刻,我有以下代码,理论上应该允许我登录推特。
var auth = new XAuthAuthorizer()
{
Credentials = new XAuthCredentials()
{
UserName = "username",
Password = "supersecretpassword",
ConsumerKey = "2131341234Q123123",
ConsumerSecret = "671723458671253481234"
}
};
auth.Authorize();
using (var twitterCtx = new TwitterContext(auth))
{
//Log
twitterCtx.Log = Console.Out;
var users =
(from tweet in twitterCtx.User
where tweet.Type == UserType.Search &&
tweet.ScreenName == ""
select tweet)
.ToList();
users.ForEach(user =>
{
var status =
user.Protected || user.Status == null ?
"Status Unavailable" :
user.Status.Text;
Console.WriteLine(
"ID: {0}, Name: {1}'nLast Tweet: {2}'n",
user.Identifier.UserID, user.Identifier.ScreenName, status);
});
我还没有向twitter发送XAuth访问请求。(https://dev.twitter.com/docs/oauth/xauth)这毕竟是一个测试应用程序,看看它是如何做到的。
我的问题是这个。我可以允许我的用户在不使用Xauth的情况下提供他们的twitter用户名和密码并登录吗?如果可能的话,我该怎么做。。。这是一个更好的解决方案吗?如果你能给我一个使用linq2twitter的例子,我会非常满意。我是一个新手开发人员,我到处碰壁。。。此外,这里给定的代码,如果我从twitter获得Xauth访问权限,这会起作用吗?
提前谢谢大家。我真的被卡住了,谷歌现在开始恨我了。。。
编辑。。。
我找到了这个链接https://dev.twitter.com/docs/auth/implementing-sign-twitter但我收到了401未经授权的退货。。。不知道为什么,如果你发现什么不对劲,请告诉我。我认为这是回叫网址,但我有点不确定
string oauth_signature_method = "HMAC-SHA1";
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
string oauth_timestamp = Convert.ToInt64(ts.TotalSeconds).ToString();
string oauth_version = "1.0";
string oauth_consumer_key = "123123412341235";
string oauth_nonce = Convert.ToBase64String(new ASCIIEncoding().GetBytes(DateTime.Now.Ticks.ToString()));
SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
sd.Add("oauth_version", oauth_version);
sd.Add("oauth_consumer_key", oauth_consumer_key);
sd.Add("oauth_nonce", oauth_nonce);
sd.Add("oauth_signature_method", oauth_signature_method);
sd.Add("oauth_timestamp", oauth_timestamp);
UrlEntity callback = new UrlEntity();
callback.Url = @"http://127.0.0.1";
string encodedCallbackUrl = HttpUtility.UrlEncode(callback.Url);
sd.Add("oauth_callback",encodedCallbackUrl);
WebClient wc = new WebClient();
wc.Headers.Add("User-Agent: randomAgent HTTP Client");
wc.Headers.Add("Host: api.twitter.com");
wc.Headers.Add(@"Accept: */*");
UrlEntity url = new UrlEntity();
url.Url = @"https://api.twitter.com/oauth/request_token";
string signature = CreateSignature(url, sd);
sd.Add("oauth_signature",signature);
string dataValues = "";
foreach (KeyValuePair<string, string> pair in sd)
{
dataValues += pair.Key + "='" + pair.Value + "',";
}
dataValues = dataValues.Substring(0, dataValues.Length - 1); // cuts off the last,
string headerVal = " Oauth " + dataValues;
wc.Headers.Add("Authorization",headerVal);
wc.UploadString(@"https://api.twitter.com/oauth/request_token", "");
wc.DownloadStringCompleted += WcOnDownloadStringCompleted;
我还不知道回叫url该用什么。
这是不可能的,您正在使用库(dlls…)在twitter上进行访问,并且twitter不允许您在没有oAuth的情况下获得授权(至少我不知道任何其他方式)。
你在TwitterDev上制作的应用程序非常重要;D.我有和你现在一样的错误,但我想!。在TwitterDev:中尝试以下代码
1 -Access level Read, write, and direct messages
2 -Consumer key your_consumer_key
3 -Consumer secret your_very_large_consumer_secret_key
4 -Request token URL https://api.twitter.com/oauth/request_token
5 -Authorize URL https://api.twitter.com/oauth/authorize
6 -Access token URL https://api.twitter.com/oauth/access_token
7 -Callback URL https://api.twitter.com/oauth/authorize
Sign in with Twitter Yes
我的错误在第4、5、6和7行。。。更多