Linq2Twitter搜索缺少受保护的推文

时间:2017-10-12 09:16:02

标签: c# linq-to-twitter

我正在使用Linq2Twitter并希望从任何公开推文和我关注的任何受保护的推文中获取带有特定主题标签的所有推文。我使用SingleUserAuthorizer设置我的连接,使用我的消费者密钥,秘密,访问令牌和访问令牌秘密。我可以收到任何公开推文,但是我没有从我关注的人那里收回任何受保护的推文。

我在循环中进行了以下设置以继续获取更多结果。我收到了大量的公开推文,包括来自我的公共测试帐户,但是从我受保护的测试帐户中我得不到任何内容。

search = await (twitterCtx.Search.Where(srch => srch.Type == SearchType.Search 
                                                                && srch.Count == 100 
                                                                && srch.Query == "#myHastTag"
                                                                && srch.MaxID == minID
                                                                && srch.ResultType == ResultType.Recent
                                                            )
                                                    .Select(srch => srch))
                                                    .SingleOrDefaultAsync();

我在搜索时尝试循环并获得更多结果(使用srch.MaxID),但我无法在结果中找到我的推文。

如果我使用完全相同的身份验证但搜索具有受保护推文的用户,那么我会收到回复:

search = await (twitterCtx.Status.Where(t => t.Type == StatusType.User
                                                                && t.UserID == myTwitterUserID
                                                            )
                                                    .Select(t => t))
                                                    .ToListAsync();

在搜索结果时如何才能包含受保护的推文?

1 个答案:

答案 0 :(得分:0)

我刚刚阅读https://support.twitter.com/articles/14016 - 我猜测除非用户授权我的应用,否则如果他们的帐户受到保护,我将无法收到他们的推文。

解决方法: 到目前为止,我提出的最好的方法是查询用户主页时间轴,然后通过HashTag过滤它。如果您将该列表与公共帖子列表混合,那么您应该拥有所有这些列表:

using (var twitterCtx = new TwitterContext(auth))
            {
                var tweets =
                await
                (from tweet in twitterCtx.Status
                 where tweet.Type == StatusType.Home
                 && tweet.TweetMode == TweetMode.Extended
                 select tweet)
                .ToListAsync();

                var filteredTweets = tweets.Where(t => t.Entities.HashTagEntities.Any(h => h.Tag == "GregsTestWall"));

            }