4

调试以下代码时,我在以下问题上停留了一段时间:

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

谁能帮助我?

提前致谢

4

3 回答 3

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 上查看,似乎此更新可能会解决问题。

于 2013-11-21T21:25:53.570 回答
2

下载最新版本的 TweetSharp,旧版本的 user_id 为 Int32,但新版本为 Int64 https://github.com/danielcrenna/tweetsharp

于 2014-03-18T08:07:17.100 回答
1

发生这种情况是因为 Twitter 不久前引入了 64 位用户 ID。

较旧的 Twitter 帐户仍然具有 32 位 ID,并且 TweetSharp 与它们配合得很好。但是,如果您最近开设了一个帐户,您可能已经拥有 64 位 ID,而 Tweet Sharp 会失败。

我通过从 NuGet 获取 tweetsharp-unofficial 包解决了这个问题。

于 2014-10-08T21:16:58.130 回答