我正在使用Twitter公共流API搜索一些关键字。我正在用Java编写脚本,因此我使用twitter4j。现在我偶然发现了关于状态删除通知的信息:
状态删除通知(delete)
这些消息表明给定的Tweet已被删除。客户端代码必须通过清除引用的推文来尊重这些消息内存和任何存储或归档,即使在极少数情况下删除消息到达流的时间比Tweet消息早引用。
https://dev.twitter.com/docs/streaming-apis/messages Status_deletion_notices_delete
因此,我创建了一些方法,以便在出现此类通知时从数据库中删除记录。不幸的是,这样的通知从来没有发生过。我搜索找出我做错了什么,并在twitter开发人员部分发现了一些关于同样问题的帖子:
- https://dev.twitter.com/discussions/17393
- https://dev.twitter.com/discussions/19943
- https://dev.twitter.com/issues/1355
- https://dev.twitter.com/discussions/12836
但不幸的是所有这些讨论都没有得到答案。所以对我来说,似乎我没有错误与我的代码,但twitter4j从来没有给我发送删除通知。
我想尊重twitter用户的隐私——至少出于法律原因。所以我的问题是:
- 我能做些什么来尊重用户的隐私?
- 我应该怎样做才能履行我的法律责任
一种替代方法似乎是定期遍历数据库中保存的所有tweet,并从twitter请求它们,以查看是否得到返回的结果(因此它们被删除)。但这似乎不是一个可行的方法,因为数据会越来越多,因此在某个时间点,我将有限制(在时间上,允许的twitter请求,…)。那我该怎么办呢?
提前感谢!非常感谢您的帮助。
路德维希
twitter4j v.3.0.6
考虑到tweet数量的性质,假设您会检查所有tweet是否仍然存在是不合理的。你应该确保你正确地处理来自twitter的删除通知。他们有责任实际发送删除通知。
话虽如此,我还是收到了twitter上的删除通知。然而,我们不使用公共流,我们使用的是网站流,它依赖于授权特定的社交账户,并实时向我们传输这些账户的所有更新(例如,收藏,关注,块,推文,转发等)。
例如,如果您正在处理带有过滤器的流,那么将所有删除的项作为新项通过相同的管道运行可能是不可行的(或者至少是非常费力的)。或者,根据您运行过滤器的时间来猜测您被发送的内容。
正如你链接到的问题中所指出的,公共流媒体API不一定会发送它们。我将努力处理它们,并可能提供一个工具来手动删除任何通过另一个渠道进来的请求,但不用太担心,因为twitter没有提供适当的设施来通知这些实例。