微博開放平臺開發之驗證微博消息的真實性

因公司項目需求,須要接一下微博的一些接口、雖然看起來應該是跟微信公衆平臺的同樣,可是無奈文檔作的實在是太爛了,都沒有一個明確的目錄,幸好以前接過微信公衆平臺,也算是有點經驗。 【所謂驗籤】 在開發者首次使用事件推送服務時,須要先經過一次校驗來和微博服務器創建首次鏈接;微博服務器發送GET請求到開發者填寫的URL上,校驗參數以下表所示:php

校驗參數字段 字段類型 字段說明
signature string 微博加密簽名,signature結合了開發者appsecret參數和請求中的timestamp參數,nonce參數
timestamp string 時間戳
nonce string 隨機數
echostr string 隨機字符串

signature參數的加密規則爲:將appsecret參數,timestamp參數,nonce參數進行字典排序後,將三個參數字符串拼接成一個字符串進行sha1加密;開發者收到請求後,首先經過加密後的signature參數來校驗GET請求的真實性,若是確認這次GET請求來自微博服務器,原樣返回echostr參數內容就能夠成功創建首次鏈接,不然鏈接失敗。bash

創建首次鏈接後,後續每次微博事件推送時也都會帶上signature、timestamp、nonce三個參數,開發者依然能夠經過對signature的校驗判斷此條消息的真實性。校驗方式與首次創建鏈接一致。服務器

<?php
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $echostr = $_GET['echostr'];
    $token = YOUR_APP_SECRET;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature && $echostr){
        echo $echostr;
        exit;
    }else{
    ////DO something
    }
複製代碼

其實和微信開放平臺的消息驗證是同樣的,只不過微博把token換成了appsecret字段,另外這個文檔很難找,我仍是百度才找到的相關說明。微信

相關文章
相關標籤/搜索