Twitter開發(fā)者賬號申請被拒——Twitter IDs(snowflake)

來源:簡書
作者:Dedededi
時間:2020-06-21
5898
本系列是對推特開發(fā)者文檔進(jìn)行的翻譯,以便幫助開發(fā)人員使用API接口。


本系列是對推特開發(fā)者文檔進(jìn)行的翻譯,以便幫助開發(fā)人員使用API接口,難免有些地方存在不足,還請諒解。

關(guān)于如何獲得一個推特開發(fā)者賬號請看此貼。

什么是Snowflake?

Snowflake是一種服務(wù),用于為Twitter中的對象(Tweets、Direct Messages、Users、Collections、list等)生成唯一的id。這些id是唯一的64位無符號整數(shù),它們基于時間,而不是順序的。完整的ID由時間戳、工作編號和序列號組成。在使用JSON使用API時,始終使用字段id_str而不是id是很重要的。這是由于使用JSON的Javascript和其他語言計算大整數(shù)的方式所致。如果您遇到一個不符合id和id_str的場景,那是因為您的環(huán)境已經(jīng)解析了id整數(shù),并在過程中修改了數(shù)字。請閱讀下面的內(nèi)容,了解更多關(guān)于Twitter如何生成id的信息。

問題

一些編程語言(如Javascript)不能支持大于53位的數(shù)字。這可以通過在瀏覽器控制臺中運(yùn)行類似于:(90071992547409921).toString()的命令或通過JSON解析器試運(yùn)行以下JSON片段。

{"id":10765432100123456789,"id_str":"10765432100123456789"}

在受影響的JSON解析器中,ID將不會成功轉(zhuǎn)換,并且會失去準(zhǔn)確性。在某些解析器中,甚至可能會有例外。

解決方案

為了允許Javascript和JSON解析器讀取ID,Twitter對象在使用JSON響應(yīng)時包含任何ID的字符串版本。因此,Twitter API中的Status、User、Direct Message、Saved Search和其他id在JSON響應(yīng)中既作為整數(shù)又作為字符串返回。

例如,status對象包含一個id和一個id_str。status對象的以下JSON表示顯示了每個數(shù)據(jù)的id字段的兩個版本。

21615413-0a291b86f30ef1ca.jpg

21615413-268cc9151d19572e.jpg

可以看到既有id也有id_str

開發(fā)人員需要做什么

首先要做的是嘗試使用解釋器對上面的JSON代碼片段進(jìn)行解碼。觀察輸出以確認(rèn)ID沒有丟失準(zhǔn)確性。

·如果您的代碼成功地轉(zhuǎn)換了ID而沒有失去準(zhǔn)確性,您可以接受,但是應(yīng)該考慮盡快轉(zhuǎn)換為IDs的str版本。

·如果代碼失去準(zhǔn)確性,請將代碼轉(zhuǎn)換為使用str版本。如果不這樣做,代碼將無法可靠地與Twitter API交互。

·在某些解釋器中,JSON在讀取ID值時可能拋出異常。如果在解釋器中發(fā)生這種情況,您將需要“預(yù)分析”數(shù)據(jù),刪除或用它們的str版本替換ID參數(shù)。

總結(jié)

1.如果您使用Javascript開發(fā),請知道您將必須更新代碼以讀取字符串版本而不是整數(shù)版本。

2.如果使用JSON解碼器,請驗證上面的示例JSON是否在不引發(fā)異常的情況下解碼。如果拋出異常,則需要預(yù)分析數(shù)據(jù)。

原文鏈接:點擊前往 >
版權(quán)說明:本文內(nèi)容來自于簡書,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家