當前位置:首頁>>關于宣盟>>聯系我們>>新聞媒體>>營銷知識
出處: 作者: 發表時間:2017-01-19
微信access_token設計的原理是什么?
1、access_token是加密的字符串,其目的是為了接口安全考慮,不然隨便就能調用微信服務器的接口會有很大風險。
2、用戶在公眾號中填寫的Token就相當于本項目中的xiaoming,是簽名驗證中的一個參數,來保證簽名的安全。
3、EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。
4、signature:微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
5、timestamp:時間戳。
6、nonce:隨機數。
7、echostr:隨機字符串。
8、微信signature加密/校驗流程:
(1)將token、timestamp、nonce三個參數進行字典序排序。
(2)將三個參數字符串拼接成一個字符串進行sha1加密。
(3)開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信。
9、OpenID:為了識別用戶,每個用戶針對每個公眾號會產生一個安全的OpenID,OpenID是使用用戶微信號加密后的結果,每個用戶對每個公眾號有一個唯一的OpenID,開發者可通過OpenID來獲取用戶基本信息。
10、UnionID:用來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號,用戶的UnionID是唯一的。換句話說,同一用戶,對同一個微信開放平臺帳號下的不同應用,UnionID是相同的。
11、AppID:接口身份證號。
12、AppSecret:密碼。
13、access_token:公眾號的全局唯一票據(登陸后的憑據,證明你已經登陸,相當于你拿著票去看演唱會,說明你已經買票了,才會讓你進)。
14、expires_in:access_token過期時間,因為這里是第三方服務器調用,所以微信服務器必須返回告知給第三方服務器過期時間,從而讓第三方服務器更好處理。
15、access_token使用注意事項:
(1)為了保密appsecrect,第三方需要一個access_token獲取和刷新的中控服務器。而其他業務邏輯服務器所使用的access_token均來自于該中控服務器,不應該各自去刷新,否則會造成access_token覆蓋而影響業務。
(2)目前access_token的有效期通過返回的expire_in來傳達,目前是7200秒之內的值。中控服務器需要根據這個有效時間提前去刷新新access_token。在刷新過程中,中控服務器對外輸出的依然是老access_token,此時公眾平臺后臺會保證在刷新短時間內,新老access_token都可用,這保證了第三方業務的平滑過渡。
(3)3、access_token的有效時間可能會在未來有調整,所以中控服務器不僅需要內部定時主動刷新,還需要提供被動刷新access_token的接口,這樣便于業務服務器在API調用獲知access_token已超時的情況下,可以觸發access_token的刷新流程。
16、access_token兩小時過期時間的設計原因(網絡解釋):access_token的過期也是為安全考慮。
(1)想象一種情況,我授權了一個應用,它拿到了我的access_token,然后我忘記我授權過了,于是我以后每次發布的內容都被它拿去存起來,或者它利用我的賬號偷偷的發消息,我一點都不知道。這種情況還是很可怕的。
(2)如果只是做登錄,確實不需要accesstoken,因為已經有openid或者uid跟你的用戶對應起來了。但是,這是授權行為啊,意味這第三方應用可以拿著accesstoken去取你的數據啊。所以這里就需要時效性來保證安全了。
17、微信access_token兩小時過期時間的設計原因(自我理解):微信的token兩小時刷新一次是因為第三方服務器接入微信服務器,目的是獲取微信服務器中的數據,也就是所謂的第三方登陸,用戶通過第三方服務器登陸,第三方服務器再去微信平臺獲取數據,這樣就需要一個授權的過程,也就是說微信服務器同意你某個第三方服務器獲取數據才行,為了把控這個授權過程,不會因為授權之后就一直能獲取微信服務器數據這種情況的發生,所以才有了兩小時刷新一次。
18、微信服務器接口訪問次數限制:微信服務器接口訪問限制次數是為了防止第三方服務器因為程序錯誤無限調用微信服務器從而使得微信服務器崩潰,所以才有的訪問次數限制。
19、簽名驗證:驗證消息的確來自微信服務器(本項目中為:驗證參數的確來自于本項目安卓客戶端)。
上一篇:UI扁平化設計趨勢