亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

java微信公眾號第三方接入解析及全網(wǎng)檢查代碼示例

優(yōu)采云 發(fā)布時(shí)間: 2020-08-22 12:10

  java微信公眾號第三方接入解析及全網(wǎng)監測代碼示例

  一、接入大體思路解析

  這里主要是查看文檔的授權流程技術(shù)說(shuō)明,這里從開(kāi)發(fā)者角度介紹。

  接入第三方的開(kāi)發(fā)者想必早已對公眾號開(kāi)發(fā)比較了解,第三方是代微信號實(shí)現功能的一個(gè)組件,所以其實(shí)陌陌方的開(kāi)發(fā)們也是這么考慮,為第三方的access_token起名為component_access_token。

  1、首先獲取第三方

  component_access_token

  這個(gè)過(guò)程中會(huì )使用到陌陌服務(wù)器定期向我們服務(wù)器推送的component_verify_ticket數組,加上component_appid、component_appsecret等信息即可獲得。

  2、獲取授權公眾號信息

  類(lèi)似公眾號網(wǎng)頁(yè)授權,通過(guò)反彈的方式,微信公眾號運營(yíng)者可以通過(guò)陌陌掃碼的方式將公眾號授權給第三方,唯一有些不同的這兒在拼出授權跳轉頁(yè)面url后的第一步是引導用戶(hù)跳轉到該頁(yè)面上,再進(jìn)行掃碼,所以這個(gè)跳轉不是必須在陌陌外置瀏覽器中進(jìn)行。

  拼出的url中的參數出了要用到component_access_token外還須要一個(gè)pre_auth_code預授權碼,可通過(guò)component_access_token獲得,具體的實(shí)效時(shí)間機制和component_access_token差不多。

  用戶(hù)授權成功后會(huì )在redirect_url后接參數auth_code,類(lèi)似公眾號網(wǎng)頁(yè)授權的code值,通過(guò)auth_code和component_access_token等信息即可獲得該授權公眾號信息,若中間要與公眾號第三方平臺的帳號綁定再帶一個(gè)帳號標識參數即可。

  3、帶公眾號實(shí)現業(yè)務(wù)

  公眾號授權成功后第三方會(huì )得到該公眾號的authorizer_access_token,與公眾號的access_token功能相同,使用這個(gè)即可用微信公眾號的插口代公眾號實(shí)現業(yè)務(wù)。

  有些不同的再第三方文檔里以有說(shuō)明。官方文檔

  另外文檔上沒(méi)有提及的是,每當有公眾號授權成功后,微信服務(wù)器會(huì )將公眾號授權信息推送到授權風(fēng)波接收URL,即接收component_verify_ticket的插口。

  4、關(guān)于加密揭秘

  獲取陌陌服務(wù)器推送信息的時(shí)侯都是進(jìn)行加密的。

  二、接入中發(fā)覺(jué)的幾個(gè)問(wèn)題1、微信的示例java代碼,XMLParse類(lèi)中

  /**

* 提取出xml數據包中的加密消息

* @param xmltext 待提取的xml字符串

* @return 提取出的加密消息字符串

* @throws AesException

*/

public static Object[] extract(String xmltext) throws AesException {

Object[] result = new Object[3];

try {

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

StringReader sr = new StringReader(xmltext);

InputSource is = new InputSource(sr);

Document document = db.parse(is);

Element root = document.getDocumentElement();

NodeList nodelist1 = root.getElementsByTagName("Encrypt");

NodeList nodelist2 = root.getElementsByTagName("ToUserName");

System.out.println("nodelist2.item(0)="+nodelist2.item(0));

result[0] = 0;

result[1] = nodelist1.item(0).getTextContent();

//這里加了一個(gè)判斷,因為接收推送component_verify_ticket的解謎過(guò)程中沒(méi)有第三個(gè)參數,回報空指針異常

if(nodelist2.item(0) != null){

result[2] = nodelist2.item(0).getTextContent();

}

return result;

} catch (Exception e) {

e.printStackTrace();

throw new AesException(AesException.ParseXmlError);

}

}

  2、文檔中:使用授權碼換取公眾號的插口調用憑據和授權信息

  返回json信息最后少了一個(gè)}

  {

"authorization_info": {

"authorizer_appid": "wxf8b4f85f3a794e77",

"authorizer_access_token": "QXjUqNqfYVH0yBE1iI_7vuN_9gQbpjfK7hYwJ3P7xOa88a89-Aga5x1NMYJyB8G2yKt1KCl0nPC3W9GJzw0Zzq_dBxc8pxIGUNi_bFes0qM",

"expires_in": 7200,

"authorizer_refresh_token": "dTo-YCXPL4llX-u1W1pPpnp8Hgm4wpJtlR6iV0doKdY",

"func_info": [

{

"funcscope_category": {

"id": 1

}

},

{

"funcscope_category": {

"id": 2

}

},

{

"funcscope_category": {

"id": 3

}

}

]

}

}

  大家開(kāi)發(fā)時(shí)要注意json數據結構

  三、關(guān)于代碼

  在 微信公眾帳號第三方平臺全網(wǎng)發(fā)布源碼(java)- 實(shí)戰測試通過(guò) 代碼結構基礎上進(jìn)行更改

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久