【问题标题】:TweetInvi - Cannot Unfollow UsersTweetInvi - 无法取消关注用户
【发布时间】:2016-10-20 06:04:18
【问题描述】:

我有以下代码,旨在查找您关注的用户以及您请求关注的用户。然后它会取消关注那些没有关注你的人。然而,它似乎从来没有真正起作用,但是 AuthenticatedUser_UnFollowUser 返回 true。有任何想法吗?谢谢。

            private void AuthenticateUser()
                    {
                        CheckRateLimits();
                        Auth.SetUserCredentials(_consumerKey, _consumerSecret, _userAccessToken, _userAccessSecret);
                        authenticatedUser = User.GetAuthenticatedUser();
                    }

                    private void CheckRateLimits()
                    {

                        // Enable RateLimit Tracking
                        RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait;
                        TweetinviEvents.QueryBeforeExecute += (sender, args) =>
                        {
                            var queryRateLimits = RateLimit.GetQueryRateLimit(args.QueryURL);

                            // Some methods are not RateLimited. Invoking such a method will result in the queryRateLimits to be null
                            if (queryRateLimits != null)
                            {
                                if (queryRateLimits.Remaining > 0)
                                {
                                    AppendProgress("RateLimits Available : " + queryRateLimits.Remaining.ToString());
                                    // We have enough resource to execute the query
                                    return;
                                }

                                // Strategy #1 : Wait for RateLimits to be available
                                AppendProgress("Waiting for RateLimits until : " + queryRateLimits.ResetDateTime.ToLongTimeString() + "For " + queryRateLimits.ToString());
                                MessageBox.Show("Waiting for " + queryRateLimits.ResetDateTime.ToLongTimeString());
                                Thread.Sleep((int)queryRateLimits.ResetDateTimeInMilliseconds);

                                // Strategy #2 : Use different credentials
                                //var alternateCredentials = TwitterCredentials.CreateCredentials("", "", "", "");
                                //var twitterQuery = args.TwitterQuery;
                                //twitterQuery.OAuthCredentials = alternateCredentials;

                                // Strategy #3 : Cancel Query
                                //args.Cancel = true;
                            }
                        };
                    }

                  private void UnfollowUsersNotFollowingYou()
                    {
                        AuthenticateUser();
                        var toUnfollow = Examples.Friendship_GetUsersNotFollowingYou();

                        toUnfollow.ForEach(x =>
                        {
                            if (Examples.AuthenticatedUser_UnFollowUser(x.ScreenName))
                            {
                                AppendProgress("You have unfollowed " + x.ScreenName);
                                SaveUnfollowedUserIdToTextFile(x.ScreenName);
                            }
                        });

                    }
//From Examples Static Class                
                public static bool AuthenticatedUser_UnFollowUser(string userName)
                    {
                        var authenticatedUser = User.GetAuthenticatedUser();
                        var userToFollow = User.GetUserFromScreenName(userName);

                        bool unfollowed = authenticatedUser.UnFollowUser(userToFollow);

                        return unfollowed;
                    }

    //Users Not Following You
                public static IEnumerable<IUser> Friendship_GetUsersNotFollowingYou()
            {
                var currentuser = Examples.User_GetCurrentUserScreenname();
                var followers = Examples.User_GetFriendIds(currentuser);
                var following = Examples.Friendship_GetUsersYouRequestedToFollow();

                var toUnfollow = following.Where(x => followers != x.FriendIds);

                return toUnfollow;
            }

【问题讨论】:

    标签: c# tweetinvi


    【解决方案1】:

    我是 Tweetinvi 的开发者。我刚刚验证过,unfollow like follow 似乎工作正常。您能否确认您使用的是最新版本的 Tweetinvi (0.9.13.0)?

    另外请注意,即使用户没有被关注,取消关注也会返回成功。这就是 Twitter 正在返回的内容,对此我无能为力。

    编辑:

    问题在于@david-beamont 没有正确检索用户。

    这是获取以下用户的代码:

    var authenticatedUser = User.GetAuthenticatedUser(); 
    var friends = authenticatedUser.GetFriends();
    

    【讨论】:

    • 如果需要我可以把项目发给你。我对收藏或以下功能没有任何问题。
    • 我正在使用 TweetinviAPI.0.9.13.0
    • 嗯,我需要看到你的代码在现场工作。我看不出这怎么行不通。您所指的所有功能都正常工作。
    • 我今天又看了一下这个,看起来像我的方法:Friendship_GetUsersYouRequestedToFollow() 在这里获取您请求关注的用户,我似乎很困惑。它看起来像方法:Account.GetUsersYouRequestedToFollow() 实际上只返回具有受保护帐户的用户,并且您已向他们发送了待处理的关注请求。那仍然悬而未决。有什么方法可以用来获取我的以下 ID 吗?
    • var authenticatedUser = User.GetAuthenticatedUser(); var friends = authenticatedUser.GetFriends(); Twitter 为关注用户命名为好友。
    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 2018-01-03
    • 2018-07-29
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多