当我调试以下代码时,我在以下问题上遇到了一段时间:
TwitterService service = new TwitterService("_consumerkey", "_consumersecret");
OAuthRequestToken requestToken = service.GetRequestToken();
Uri uri = service.GetAuthorizationUri(requestToken);
Process.Start(uri.ToString());
Console.Write("Verificatiecode? ");
string verifier = Console.ReadLine();
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);
service.AuthenticateWith(access.Token, access.TokenSecret);
TwitterUser twitterUser = service.GetUserProfile(new GetUserProfileOptions());
ListFriendsOptions friends_options = new ListFriendsOptions();
friends_options.UserId = twitterUser.Id;
friends_options.Cursor = -1;
var friends = service.ListFriends(friends_options);
do
{
if (friends_options.Cursor != null)
{
foreach (var friend in friends) {Console.WriteLine(friend.ScreenName);}
friends_options.Cursor = friends.NextCursor;
}
} while (friends_options.Cursor != null);
Console.ReadKey(true);
在此处填写验证码后,我总是遇到溢出异常:
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);
任何可以帮助我的人?
提前致谢
答案 0 :(得分:3)
查看源代码,似乎问题是它何时尝试在GetAccessToken
内返回结果:
return new OAuthAccessToken()
{
Token = nameValueCollection["oauth_token"] ?? "?",
TokenSecret = nameValueCollection["oauth_token_secret"] ?? "?",
//this is the only place a conversion to int is occurring that I've found
UserId = Convert.ToInt32(nameValueCollection["user_id"] ?? "0"),
ScreenName = nameValueCollection["screen_name"] ?? "?"
};
在Github上看,似乎this update可能会解决问题。
答案 1 :(得分:2)
下载最新版本的TweetSharp,旧版本的user_id为Int32,新版本为Int64 https://github.com/danielcrenna/tweetsharp
答案 2 :(得分:1)
这是因为Twitter推出了64位用户ID。
较旧的Twitter帐户仍然具有32位ID并且TweetSharp可以正常使用它们。但是,如果您最近开设了一个帐户,那么您可能已经拥有64位ID,并且Tweet Sharp会失败。
我通过从NuGet获取tweetsharp-unofficial包来解决问题。