Twitter开发者账号申请【推特开发者文档系列6】——Twitter IDs(snowflake)

本系列是对推特开发者文档进行的翻译,以便帮助开发人员使用API接口,难免有些地方存在不足,还请谅解。

关于推特开发者账号 elevated academic 请看此贴:

推特开发者账号申请权限

搜索微信公众号 twitterDeveloper 获得帮助


什么是Snowflake?

Snowflake是一种服务,用于为Twitter中的对象(Tweets、Direct Messages、Users、Collections、list等)生成唯一的id。这些id是唯一的64位无符号整数,它们基于时间,而不是顺序的。完整的ID由时间戳、工作编号和序列号组成。在使用JSON使用API时,始终使用字段id_str而不是id是很重要的。这是由于使用JSON的Javascript和其他语言计算大整数的方式所致。如果您遇到一个不符合id和id_str的场景,那是因为您的环境已经解析了id整数,并在过程中修改了数字。请阅读下面的内容,了解更多关于Twitter如何生成id的信息。

问题

一些编程语言(如Javascript)不能支持大于53位的数字。这可以通过在浏览器控制台中运行类似于:(90071992547409921).toString()的命令或通过JSON解析器试运行以下JSON片段。
{"id": 10765432100123456789, "id_str": "10765432100123456789"}
在受影响的JSON解析器中,ID将不会成功转换,并且会失去准确性。 在某些解析器中,甚至可能会有例外。

解决方案

为了允许Javascript和JSON解析器读取ID,Twitter对象在使用JSON响应时包含任何ID的字符串版本。因此,Twitter API中的Status、User、Direct Message、Saved Search和其他id在JSON响应中既作为整数又作为字符串返回。

例如,status对象包含一个id和一个id_str。status对象的以下JSON表示显示了每个数据的id字段的两个版本。

在这里插入图片描述
在这里插入图片描述

可以看到既有id也有id_str

开发人员需要做什么

首先要做的是尝试使用解释器对上面的JSON代码片段进行解码。 观察输出以确认ID没有丢失准确性。

  • 如果您的代码成功地转换了ID而没有失去准确性,您可以接受,但是应该考虑尽快转换为IDs的str版本。

  • 如果代码失去准确性,请将代码转换为使用str版本。如果不这样做,代码将无法可靠地与Twitter API交互。

  • 在某些解释器中,JSON在读取ID值时可能抛出异常。如果在解释器中发生这种情况,您将需要“预分析”数据,删除或用它们的str版本替换ID参数。

总结

1.如果您使用Javascript开发,请知道您将必须更新代码以读取字符串版本而不是整数版本。
2.如果使用JSON解码器,请验证上面的示例JSON是否在不引发异常的情况下解码。如果抛出异常,则需要预分析数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值