1. 注冊(cè),開發(fā)者身份認(rèn)證
這一步需要填寫一些個(gè)人或者公司的身份信息划址,需要300塊錢的認(rèn)證費(fèi)。
這一步比較簡(jiǎn)單限府,就不多說了夺颤,基本上交了錢就能通過了。
2. 創(chuàng)建第三方開放平臺(tái)
2.1 第三方平臺(tái)運(yùn)行機(jī)制:
用戶公眾號(hào)綁定的微信掃碼授權(quán)給第三方平臺(tái)胁勺,第三方平臺(tái)獲得對(duì)方公眾號(hào)的部分控制權(quán)世澜,比如當(dāng)授權(quán)消息管理權(quán)限時(shí),用戶公眾號(hào)收到的消息會(huì)自動(dòng)轉(zhuǎn)發(fā)給第三方平臺(tái)署穗,第三方平臺(tái)再代替用戶公眾號(hào)回復(fù)寥裂。
2.2 創(chuàng)建流程
填寫基本,這個(gè)根據(jù)實(shí)際情況填寫案疲。
設(shè)置權(quán)限集封恰,這個(gè)根據(jù)需要獲取的公眾號(hào)權(quán)限設(shè)置。
-
填寫開發(fā)資料褐啡,這個(gè)信息十分關(guān)鍵俭驮,后面的開發(fā)基本圍繞于此。
登錄授權(quán)的發(fā)起頁域名:填寫平臺(tái)域名春贸,不要寫
https://
之類的協(xié)議頭。授權(quán)測(cè)試公眾號(hào)列表:填寫自己用于開發(fā)測(cè)試使用的公眾號(hào)
AppID
授權(quán)事件接收URL:用戶公眾號(hào)在授權(quán)接入遗遵、取消授權(quán)萍恕、更新授權(quán)的時(shí)候,微信會(huì)向平臺(tái)服務(wù)器的這個(gè)URL發(fā)送請(qǐng)求车要,需要平臺(tái)做相關(guān)處理允粤。
下面這些信息和公眾號(hào)開發(fā)基本一致,在獲取了用戶授權(quán)之后,可以將授權(quán)公眾號(hào)當(dāng)作自己的公眾號(hào)開發(fā):
公眾號(hào)消息校驗(yàn)Token类垫,公眾號(hào)消息加解密Key司光,公眾號(hào)消息與事件接收URL,公眾號(hào)開發(fā)域名
填寫白名單IP地址列表悉患,填寫自己服務(wù)器的ip就好残家。
2.3 開發(fā)流程
1.先生成供用戶點(diǎn)擊后調(diào)到授權(quán)二維碼的鏈接
鏈接的形式如下:
https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=平臺(tái)appid
&pre_auth_code=微信提供的pre_auth_code
&redirect_uri=授權(quán)回調(diào)uri
打開之后會(huì)出現(xiàn)類似這樣的二維碼,綁定了公眾號(hào)的微信掃描之后可以授權(quán)接入我們的第三方平臺(tái)售躁。
觀察上面的鏈接我們會(huì)發(fā)現(xiàn)坞淮,component_appid是創(chuàng)建之后就有的,直接復(fù)制一下貼上去就可以陪捷。
而pre_auth_code需要平臺(tái)自己獲取回窘,redirect_uri
自己填寫(注意要加協(xié)議頭)。
微信服務(wù)器每10分鐘會(huì)向授權(quán)事件接收URL
發(fā)送POST
請(qǐng)求市袖,請(qǐng)求鏈接中包含一下參數(shù)msg_signature
,
timestamp
,nonce
,請(qǐng)求的body
是一個(gè)加密之后的xml啡直,根據(jù)上面填寫的公眾號(hào)相關(guān)信息可以解密。
根據(jù)這些可以從xml中拿到ComponentVerifyTicket
,再用ComponentVerifyTicket
作為參數(shù)苍碟,向https://api.weixin.qq.com/cgi-bin/component/api_component_token
發(fā)起請(qǐng)求酒觅,就可以拿到component_access_token
,再用component_access_token
作為參數(shù)向https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode
發(fā)送請(qǐng)求,拿到最終的pre_auth_code
,到此驰怎,授權(quán)鏈接構(gòu)造完成阐滩,接下來要處理授權(quán)事件。
2.獲取用戶公眾號(hào)授權(quán)
用戶在掃碼授權(quán)后县忌,微信服務(wù)器會(huì)向redirect_uri
發(fā)送get
請(qǐng)求掂榔,我們需要處理這個(gè)請(qǐng)求,從中獲取auth_code
的值,再用使用auth_code
這個(gè)授權(quán)碼換取公眾號(hào)的授權(quán)信息authorization_info
症杏,我們可以存儲(chǔ)這些信息供后面使用装获,比如說知道是誰接入了授權(quán)等等,根據(jù)需要來厉颤,不存也問題不大穴豫。
3.代公眾號(hào)操作(這里以代接受和回復(fù)消息為例)
起始到這里,就是類似于微信公眾號(hào)開發(fā)了逼友。
用戶在接入授權(quán)的公眾號(hào)中回復(fù)消息以及授權(quán)精肃、取消授權(quán)時(shí),微信服務(wù)器會(huì)自動(dòng)將操作信息發(fā)送給我們的第三方平臺(tái)(之前留了公眾號(hào)消息與事件接收URL帜乞,這個(gè)里面可以獲取到appid司抱,主要是為了方便管理,在接收回復(fù)操作中沒什么作用)黎烈,然后我們就是接收和回復(fù)消息习柠。為了安全匀谣,微信要求消息必須要經(jīng)過加密,不然是無法發(fā)送的资溃。
4.全網(wǎng)發(fā)布驗(yàn)證
全網(wǎng)發(fā)布時(shí)武翎,需要微信那邊模擬通過。于是要在上面的基礎(chǔ)上增加一個(gè)授權(quán)事件回復(fù)溶锭。
當(dāng)消息類型是type=event
并且是微信提供的用戶名時(shí)宝恶,向這個(gè)模擬用戶回復(fù)event + "from_callback"
,和普通的文本消息一樣,只要將回復(fù)xml的content設(shè)置為event + "from_callback"
即可暖途。其中event也在接收到的xml體中卑惜,名詞是Event
。
到這里驻售,整個(gè)開放平臺(tái)就大功告成了露久,全網(wǎng)發(fā)布需要三天的審核時(shí)間,請(qǐng)耐心等待欺栗。
吐槽:微信的文檔寫的十分跳躍毫痕,作為一個(gè)很少寫web應(yīng)用的算法工程師,閱讀起來壓力很大迟几,網(wǎng)上看到部分博客也都寫的不怎么全面消请,于是我將整個(gè)開發(fā)過程完整的寫下來以便后人借鑒,少踩些坑类腮,另外臊泰,如果是用python開發(fā)的話,上面涉及微信操作的一些方法推薦使用wechatpy
這個(gè)庫蚜枢,非常方便缸逃。