新手接入指南


粉絲服務平台存取流程

97580f43jw1eu2giorp4aj20hi01omx2.jpg

#粉絲服務平台開發模式存取流程

97580f43jw1eu2gippjcuj20d001hwec.jpg

#第一步:申請訊息介面

媒體,企業,個人認證帳號,在帳號的Profile頁點擊“管理中心”,然後點選「粉絲服務"選單的」進階功能“,裡面可以選擇開啟「編輯模式」或「開發模式」。


當選擇開啟」開發模式「後,需要填寫URL和APPKEY,其中URL是開發者用來接收微博訊息伺服器資料的介面URL。 APPKEY為微博認證使用者指定並授權要為其開發服務的開發者應用KEY,該APPKEY所對應的APP Secret,將用作生成簽名(該簽名會和接口URL中包含的簽名進行比對,從而驗證請求的安全性)。


xinshoujieruzhinan_shenqingxiaoxijiekou.jpg

第二步:驗證URL有效性

在開發者首次使用事件推送服務時,需要先透過一次校驗來和微博伺服器建立首次連接,具體來說:


開發者提交資訊後,微博訊息伺服器將發送GET請求到填寫的URL上,GET請求攜帶四個參數:


QQ截图20170210141919.png開發者收到請求後,先透過加密後的signature參數來校驗GET請求的真實性,如果確認此次GET請求來自微博伺服器,原樣回傳echostr參數內容就可以成功建立首次連接,否則連接失敗。


signature參數的加密規則為:

將開發者的appsecret,timestamp參數,nonce參數進行字典排序後,將三個參數字串拼接成一個字串進行sha1加密校驗參數:

##appsercret=xyz123xyz        timestamp=1397022061823        nonce=57155157

加密結果:

拼接後的字串為:139702206182357155157xyz123xyz

sha1簽章後的結果為:90e4c22126586 ##驗證url有效性請求的範例為:http://yoururl?nonce=57155157×tamp=1397022061823&echostr=dnPdpTZz85&signature=90e4c22c90a58f26526c25&signature=90e4c22c90a58f26526c225b6c56c285b6256c285b8> z85)則透過url驗證。


PHP程式碼範例:

function checkSignature() {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
	$appsecret= appsecret;  //开发者的appsecret
	$tmpArr = array($appsecret, $timestamp, $nonce);
	sort($tmpArr, SORT_STRING);
	$tmpStr = implode( $tmpArr );
	$tmpStr = sha1( $tmpStr );
	
	if( $tmpStr == $signature ){
		return true;
	}else{
		return false;
	}
}


php範例程式碼下載:下載

#java範例程式碼下載:下載

## 

第三步:成為開發者,取得access_token

驗證URL有效性成功後即接入生效,成為開發者,此後用戶每次向微博認證帳號發送訊息、或者產生自訂選單點擊事件時,響應URL將被推送。

另外建立首次連結後,後續每次微博事件推送時也會帶上signature、timestamp、nonce三個參數,開發者仍可透過signature的校驗判斷此訊息的真實性,校驗方式與首次建立連線一致,此外請注意,粉服平台開發介面只支援80介面。

驗證URL成功後,粉服平台也會自動傳回一個access_token,如下圖所示:

開發者使用接收訊息和傳送被動訊息功能並不需要access_token,但粉服開發模式的許多其他接口,如發送被動回應訊息,呼叫時需要access_token參數作為憑證;

getaccesstoken2014.jpg

關於access_token更多的介紹可以參考:

取得粉絲服務平台開發介面的access token

附:長連線模式##除了以上的

推送存取模式

外,我們還提供了額外的長連線存取模式。此模式除了接入的技術方法不同外,功能上都是完全一樣的。

長連線模式的特點是,第三方開發者主動建立連線請求,長連線建立後,有新的訊息事件將即時回傳給第三方開發者,而不是被動等待微博訊息伺服器的GET請求,第三方開發者的控制自主性更強一點,但對應的開發難度也會大一些。