第三方平臺受權流程

微信第三方平臺做用:java

 首先要知道爲何要用公衆號第三方平臺,公衆號第三方平臺的開放,是爲了讓公衆號運營者,在面向垂直行業需求時,能夠一鍵登陸受權給第三方的公衆號運營平臺,經過第三方開發者提供的公衆號第三方平臺來完成相關業務。簡單來講就是不懂技術的小白用戶一鍵受權給第三方公司代理開放的權限如發送消息等,不用填寫一些繁瑣的Appid,AppSecret,URL,Token等信息。json

需求:服務器

也許不少人會跟我同樣,有公衆號平臺,爲何還須要第三方平臺。微信

一、受權簡單,不須要負責的手動綁定網絡

二、雖然說第三方平臺最終也是走的公衆平臺的接口。可是好比你用的是別的公司的公衆號作的微信功能(菜單,素材等等),可是消息接口沒作。那麼再用第三方平臺直接託管那個公衆號,去實現他的消息接口。併發

一、受權流程官方文檔:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN(建議必定要看完,不然會走不少彎路)app

二、全網審覈官方文檔:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318611&token=b0e30bf2053a4f9db22f01583b381187ea32dfed&lang=zh_CN(這裏若是你本身寫代碼,必需要看。若是直接Copy代碼能夠不用看測試

三、建立第三方平臺中須要注意的幾點:優化

3.一、第三方平臺有本身的appId、appSecret,與微信公衆號的沒有任何關係url

3.二、把公衆號的權限分配給第三方。

注意:若是你的公衆號沒有某個功能,分配了也沒有任何意義。

2.三、這是你須要填寫的相關回調信息。。。

常見錯誤:

一、在受權URL測試的時候,若是報AesException: 簽名驗證錯誤,多是代碼你參數填寫有錯。必定要注意是填寫第三方平臺的信息,不是公衆號的信息。

二、在受權URL測試的時候,若是報Illegal key size,那麼就是指密鑰長度是受限制的,java運行時環境讀到的是受限的policy文件。去掉這種限制須要下載Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files(https://yunpan.cn/cSrtk3Fk6WgAs  訪問密碼 244a)。替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar(jdk,jre最好都替換。)。注意必定要重啓TOMCAT才能生效

三、component ticket is exprie ticket過時,每10分鐘會微信服務器會推送到受權事件的URL中。這裏能夠不用處理設置過時時間(由於這裏的ticket是無接口調用權限的,並且是微信服務器本身推送的

四、注意公衆號消息處理的URL必須加上$APPID$

五、component_access_token過時時間爲2個小時,和公衆號的Token同樣(我處理的是存儲過時時間,超過就請求。而不是定時刷新)

六、能夠選擇你本身須要第三方託管的權限集,好比你其餘消息只走微信公衆號,只有客服消息走第三方平臺。

七、異常:請確認受權入口頁所在域名,與受權後回調頁所在域名相同,而且,此二者都必須與申請第三方平臺時填寫的受權發起頁域名相同。受權入口頁所在域名:空

(懷疑是域名問題,由於新建了一個第三方,沒有全網發佈前沒有任何問題。)

八、有可能會出現你每次啓動項目的時候,因爲每10分鐘纔會驗證一次Ticket,那麼直接調用接口,若是服務器還沒推送,會出現ticket失效(不過在正式環境還好)(就算全網經過後也會推送component_verify_ticket協議)。

九、每次受權後,想要獲取最新的權限必須從新掃碼受權。不然沒法獲取最新的消息。

十、獲取令牌的官網接口

十一、第三方中的受權的URL一級接收公衆號消息的URL都只能在同一個一級域名下

十二、若是是併發量大,作集羣的話,必定要把全部服務器的ip都加到白名單中

特別注意:

全網審覈須要有耐心,我不知道是個人網很差(我用的花生殼),仍是微信服務器有問題,由於每次我後臺沒有報錯,微信說最長審覈5分鐘,大師每次5分鐘都還沒到,就終止了。致使總有一到兩個審覈沒法經過。

接收推送ticket的時間(不知道是網絡緣由,反正有的時候不是10分推一次)

若是在確保代碼沒問題,並且網路也沒有問題的狀況下。能夠加上返回「」或者success

源碼下載:

https://yunpan.cn/cSMGaANQTx82r  訪問密碼 9b37

源碼還有待優化,以及只給了源碼的包,其他相關配置須要本身搞。

第三方平臺接口的坑:

實際的返回信息

{"authorizer_info":{"nick_name":"Curtain的程序猿之路","head_img":"URL","service_type_info":{"id":1},"verify_type_info":{"id":-1},"user_name":"wechatId","alias":"xi199321Curtain","qrcode_url":"URL","business_info":{"open_pay":0,"open_shake":0,"open_scan":0,"open_card":0,"open_store":1},"idc":1},"authorization_info":{"authorizer_appid":"appId","func_info":[{"funcscope_category":{"id":1}},{"funcscope_category":{"id":2}}]}}
相關文章
相關標籤/搜索