新手接入指南
粉絲服務(wù)平臺(tái)接入流程

粉絲服務(wù)平臺(tái)開(kāi)發(fā)模式接入流程

第一步:申請(qǐng)消息接口
媒體,企業(yè),個(gè)人認(rèn)證帳號(hào),在帳號(hào)的Profile頁(yè)點(diǎn)擊“管理中心”,然后點(diǎn)擊“粉絲服務(wù)"菜單的”高級(jí)功能“,里面可以選擇開(kāi)啟“編輯模式”或者“開(kāi)發(fā)模式”。
當(dāng)選擇開(kāi)啟”開(kāi)發(fā)模式“后,需要填寫(xiě)URL和APPKEY,其中URL是開(kāi)發(fā)者用來(lái)接收微博消息服務(wù)器數(shù)據(jù)的接口URL。APPKEY為微博認(rèn)證用戶(hù)指定并授權(quán)要為其開(kāi)發(fā)服務(wù)的開(kāi)發(fā)者應(yīng)用KEY,該APPKEY所對(duì)應(yīng)的APP Secret,將用作生成簽名(該簽名會(huì)和接口URL中包含的簽名進(jìn)行比對(duì),從而驗(yàn)證請(qǐng)求的安全性)。
第二步:驗(yàn)證URL有效性
在開(kāi)發(fā)者首次使用事件推送服務(wù)時(shí),需要先通過(guò)一次校驗(yàn)來(lái)和微博服務(wù)器建立首次連接,具體來(lái)說(shuō):
開(kāi)發(fā)者提交信息后,微博消息服務(wù)器將發(fā)送GET請(qǐng)求到填寫(xiě)的URL上,GET請(qǐng)求攜帶四個(gè)參數(shù):
開(kāi)發(fā)者收到請(qǐng)求后,首先通過(guò)加密后的signature參數(shù)來(lái)校驗(yàn)GET請(qǐng)求的真實(shí)性,如果確認(rèn)此次GET請(qǐng)求來(lái)自微博服務(wù)器,原樣返回echostr參數(shù)內(nèi)容就可以成功建立首次連接,否則連接失敗。
signature參數(shù)的加密規(guī)則為:
將開(kāi)發(fā)者的appsecret,timestamp參數(shù),nonce參數(shù)進(jìn)行字典排序后,將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密校驗(yàn)參數(shù):
appsercret=xyz123xyz timestamp=1397022061823 nonce=57155157
加密結(jié)果:
拼接后的字符串為:139702206182357155157xyz123xyz
sha1簽名后的結(jié)果為:90e4c22c90a58f26526c2dd5b6c56c8822edeaa1
驗(yàn)證url有效性請(qǐng)求的樣例為:http://yoururl?nonce=57155157×tamp=1397022061823&echostr=dnPdpTZz85&signature=90e4c22c90a58f26526c2dd5b6c56c8822edeaa1
此時(shí)如果返回的是echostr的值(此樣例中為dnPdpTZz85)則通過(guò)url驗(yàn)證。
PHP代碼示例:
function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $appsecret= appsecret; //開(kāi)發(fā)者的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示例代碼下載:下載
第三步:成為開(kāi)發(fā)者,獲取access_token
驗(yàn)證URL有效性成功后即接入生效,成為開(kāi)發(fā)者,此后用戶(hù)每次向微博認(rèn)證帳號(hào)發(fā)送消息、或者產(chǎn)生自定義菜單點(diǎn)擊事件時(shí),響應(yīng)URL將得到推送。
另外建立首次連接后,后續(xù)每次微博事件推送時(shí)也都會(huì)帶上signature、timestamp、nonce三個(gè)參數(shù),開(kāi)發(fā)者依然可以通過(guò)對(duì)signature的校驗(yàn)判斷此條消息的真實(shí)性,校驗(yàn)方式與首次建立連接一致,此外請(qǐng)注意,粉服平臺(tái)開(kāi)發(fā)接口只支持80接口。
驗(yàn)證URL成功后,粉服平臺(tái)還會(huì)自動(dòng)返回一個(gè)access_token,如下圖所示:
開(kāi)發(fā)者使用 接收消息 和 發(fā)送被動(dòng)消息 功能并不需要access_token,但粉服開(kāi)發(fā)模式的很多其他接口,如發(fā)送被動(dòng)響應(yīng)消息,調(diào)用時(shí)需要access_token參數(shù)作為憑證;
關(guān)于access_token的更多介紹可以參見(jiàn):
附:長(zhǎng)連接模式
除了以上的推送接入模式外,我們還提供了額外的長(zhǎng)連接接入模式。該模式除了接入的技術(shù)方法不同外,功能上都是完全一樣的。
長(zhǎng)連接模式的特點(diǎn)是,第三方開(kāi)發(fā)者主動(dòng)建立連接請(qǐng)求,長(zhǎng)連接建立后,有新的消息事件將實(shí)時(shí)返回給第三方開(kāi)發(fā)者,而不是被動(dòng)等待微博消息服務(wù)器的GET請(qǐng)求,第三方開(kāi)發(fā)者的控制自主性更強(qiáng)一點(diǎn),但相應(yīng)的開(kāi)發(fā)難度也會(huì)大一些。