Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 设计用于获取推特好友列表以获得大量用户群并管理速率限制_Api_Twitter - Fatal编程技术网

Api 设计用于获取推特好友列表以获得大量用户群并管理速率限制

Api 设计用于获取推特好友列表以获得大量用户群并管理速率限制,api,twitter,Api,Twitter,假设有一个移动应用程序和一个服务器 我对利率限制有疑问,希望有人能给我一些关于设计的建议,因为我正在绞尽脑汁研究如何绕过利率限制。一定有什么我错过了,因为每IP每小时150未经验证的速率限制是非常低的 设想我要构建的场景如下(简化为本讨论的一个简单示例)。假设用户已登录Twitter进行整个讨论,以删除关于oAuth的讨论。 Mobile与我们的服务对话,向用户显示twitter好友列表。每次加载移动应用程序时,它都会显示整个好友列表,并突出显示最近2天内添加的新好友。 就是这样。但诀窍是我想确

假设有一个移动应用程序和一个服务器

我对利率限制有疑问,希望有人能给我一些关于设计的建议,因为我正在绞尽脑汁研究如何绕过利率限制。一定有什么我错过了,因为每IP每小时150未经验证的速率限制是非常低的

设想我要构建的场景如下(简化为本讨论的一个简单示例)。假设用户已登录Twitter进行整个讨论,以删除关于oAuth的讨论。

Mobile与我们的服务对话,向用户显示twitter好友列表。每次加载移动应用程序时,它都会显示整个好友列表,并突出显示最近2天内添加的新好友。

就是这样。但诀窍是我想确保客户机中的好友列表始终是最新的,这意味着我们的服务器必须有最新的好友列表

我希望我的服务器定期自动扫描我应用程序中每个用户的Twitter好友列表,以查看是否添加了新好友

我们最初的设计是让我们的服务器使用此流完成所有工作:

  • 新用户登录客户端,将访问令牌授予服务器
  • 服务器调用Twitter REST API以获取初始好友列表
  • 服务器存储Twitter好友ID,并显示对该列表的客户端响应
  • 服务器会定期(例如每48小时)检查每个用户的Twitter REST API好友列表,并将其与我们缓存的Twitter好友列表进行比较,以便他们查看谁是新用户并在移动应用程序中突出显示

    这样做的好处是,所有与twitter进行的获取好友列表、比较和定期刷新的交互都在服务器上。移动客户端只需向我的服务器打一个电话,就可以获取好友列表

    这种设计的问题是,它只适用于一个用户,但由于未经身份验证的呼叫的速率限制是每小时150次,因此,只要151个用户使用我的服务(具有固定IP),我就会达到我的限制

    我能看到的唯一解决方案是让客户端为每个用户完成工作,然后将我的服务器缓存的好友列表发送给我。这就完成了上面的第2步。但是,对于第4步,我必须在客户端中构建一些东西来自动刷新twitter好友并发送回服务器

    让客户机参与这个Twitter好友列表操作真是太笨拙了

    一开始我觉得自己疯了,公众未经验证的API(如好友列表)不会受到费率限制。然而,根据他们的文档,这是事实

    我是否遗漏了一些明显的东西,或者解决这一问题的唯一方法是向客户端添加大量逻辑?

    对于那些不是祖辈或Twitter业务合作伙伴的人,我认为除了让你的移动应用程序从手机上调用Twitter API之外,你别无选择

    通过手机呼叫Twitter并不是一件坏事。世界上几乎每个Twitter客户端都这么做。一个好处是用户将通过Twitter的身份验证,因此她每小时350个电话都可以为您提供。但是,请记住,您应该尽量减少您的呼叫,因为用户可能有其他Twitt安装在她的手机上的er感知应用程序会侵蚀您的通话分配,反之亦然

    现在是解决方案。我实现您的用例的方法是首先通过调用该方法为您的用户获取完整的朋友列表

    上面的调用将为@yourUsersName返回最近的5000个好友ID,顺序如下。如果要获取的好友ID多于前5000个,则需要指定要启动的游标参数

    接下来,我将对照手机上的好友列表检查我们刚刚获取的最新好友列表,通过删除任何不再存在的ID,同时添加任何新的ID来同步他们

    如果我们只需要朋友ID,那么每5000个朋友ID就需要一次API调用。但是,如果我们还需要获取这些新朋友的用户信息,那么我会调用并传递在同步朋友ID时发现的所有新用户的列表。一次最多可以请求100个用户对象

    http://api.twitter.com/1/users/lookup.json?user_id=123123,5235235,456243,4534563
    
    您的用户必须经过身份验证才能发出上述请求,但该调用可以获取您想要的任何Twitter用户配置文件,而不仅仅是那些经过身份验证的用户的朋友

    例如,假设一个用户有2500个朋友,以前从未使用过你的应用程序。在这种情况下,她会烧掉一个电话来获取所有的朋友ID,烧掉25个电话来获取她的朋友信息。让应用程序填充数据并不太坏

    后续的呼叫应该更加精简,可能只有两个呼叫被烧掉(一个用于ID,另一个用于获取新朋友)

    最后,一旦手机上的数据被更新,就可以收集ID和用户数据的增量并推送到服务器上

    您的服务器应用程序甚至可能根本不需要与Twitter进行交互,这将减轻您遇到的150个用户的限制

    最后的一些注意事项:

  • 请务必在应用程序的隐私策略中注意,您将用户的好友列表与服务器同步
  • 我建议将JSON指定为所有TwitterAPI调用的返回格式。它是一种比XML轻得多的文档格式,通常通过网络传输的数据量仅为XML的1/3到1/2
  • 选择一个适合你的移动设备和编程语言的Twitter框架。现在Twitter访问是一种商品,几乎没有理由重新发明如何访问Twitter API
  • 我接了一个sim卡
    http://api.twitter.com/1/users/lookup.json?user_id=123123,5235235,456243,4534563