微信火了這麼久,這兩週第一次從一個開發者的角度來研究微信的生態系統而不是應用自己。如今作國內的項目或者產品不免都須要集成微信,其實如今微信背後的支撐平臺已是很是繁雜的了:html
是否是感受有點懵,這麼多平臺如何選擇,仍是須要根據本身系統的業務來看。我今天說的是開放平臺的初步集成。java
採用倒序的方式咱們一步步來講:redis
accessToken
,而後再去使用公衆平臺接口。那麼獲取accessToken
的過程實際就是公衆平臺受權給你這個第三方開放平臺的過程。至關於他給你了一把打開他家門的鑰匙。詳見官方文檔第5步.refresh_token
,鎖換了找大爺拿把新的就行。那麼這個管理員大爺怎麼找到的呢?是在第一次受權成功後會經過參數返回給你的一個authorization_code
這個至關因而地圖,能讓你第一次在毫無經驗的狀況下找到第一把鑰匙和管理員大爺,也就是官方文檔的第4步。https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx
,redirect_uri就是把authorization_code
給你的入口。例如你寫的是redirect_uri=mydomain.com/authrize/callback
,那麼一旦受權成功,瀏覽器就會跳轉到mydomain.com/authrize/callback?auth_code=xxxx
上來,你就能夠獲取authorization_code
這個地圖了。api_create_preauthcode
這個接口得到的。而調用這個接口又須要component_access_token
,這個東東就是一個令牌,你做爲第三方平臺調用微信任何API都必須有這個令牌,得到這個令牌的辦法就是用調用api_component_token
經過component_verify_ticket
去換。(仔細想想,其實component_verify_ticket
=refresh_token
, component_access_token
=accessToken
)這裏面涉及到的變量不少,特別須要注意一些的:算法
component_verify_ticket
這張門票是微信推送,大概每隔十分鐘推一次。api_component_token
剛纔說了是用上面的那張門票換的,可是有保質期,2小時,那麼能不能每次要調接口都用門票換一下?人家微信是有天天的接口調用次數限定的,因此建議用個cache緩存起來,到了1小時50分的時候讓緩存失效,失效再去call API換。能夠用redis的TTL實現。accessToken
也是有保質期的,因此必定要保存好對應的refresh_token
,到了1小時50分的時候再去換accessToken
。一旦拿到公衆號的accessToken
,那麼就能夠像普通公衆號的後臺服務那樣,好比獲取粉絲列表啊,推送文章圖片啊等等。小程序
PS: 最好採用加解密算法來進行消息的接受和推送。這裏面有一個坑:api
異常java.security.InvalidKeyException:illegal Key Size的解決方案:在官方網站下載JCE無限制權限策略文件
另外根據官網提示首次驗證服務器地址的有效性,必須返回一樣的echostr
。瀏覽器