【问题标题】:Linq2Twitter search missing protected tweetsLinq2Twitter 搜索缺少受保护的推文
【发布时间】:2017-10-13 04:03:03
【问题描述】:

我正在使用 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();

如何在搜索结果时获取受保护的推文?

【问题讨论】:

  • 私人推文是什么意思?私信?
  • @JoeMayo - 抱歉,我应该写 Protected not Private。在 Twitter 中进入设置并勾选“保护我的推文”的人。我不希望从所有用户那里获得受保护的推文,只是允许我关注他们的人。

标签: c# linq-to-twitter


【解决方案1】:

我刚刚阅读了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"));

            }

【讨论】:

  • 这无疑解释了缺少 3rd 方应用程序的部分原因。
猜你喜欢
  • 2017-12-26
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多