微信開放平臺_第三方平臺授權流程_令牌

二、令牌:

1.1 官方說明:

令牌(component_access_token)是第三方平臺接口的調用憑據。令牌的獲取是有限制的,每個令牌的有效期爲 2 小時(7200 s),請自行做好令牌的管理,在令牌快過期時(比如1小時50分),重新調用接口獲取。

 

1.2 獲取流程及示意代碼

請求地址:POST方式 url: https://api.weixin.qq.com/cgi-bin/component/api_component_token

【注意】此處使用的是POST方式發送的HTTPS請求,要使用HTTPS的發送方式。

參數數據示例:

{
 
"component_appid":  "appid_value" ,   //三方平臺 appid
  "component_appsecret":  "appsecret_value",  //三方平臺“應用密鑰(appsecret)”
  "component_verify_ticket": "ticket_value" //微信後臺 推送的“驗證票據”(component_verify_ticket)

}

請求參數查看方式,如下圖:

獲取令牌(component_access_token),示意代碼:

工具類,或是普通的類
    /**
	 * 獲取票據,若緩存中存在,則從緩存中取值,否則,走直接發送請求的獲取流程
	 * @return
	 */
	public static String getOpenAccToken(){
		webChatCatchUtil = SpringContextHolder.getBean("webChatCatchUtil");
		String token = webChatCatchUtil.getWeixinOpenComponentAccesstoken();
		if(token==null) {
			token = OpAuthCodeUtil.getOpenAccTokenInstant();
		}
		return token;
	}
    /**
	 * 直接發送請求的獲取流程
	 * @return
	 */

	private static String getOpenAccTokenInstant(){
		webChatCatchUtil = SpringContextHolder.getBean("webChatCatchUtil");

		String componentVerifyTicket = webChatCatchUtil.getWeixinOpenComponentVerifyTicket();  //獲取驗證票據
		//設置請求參數
		JSONObject json = new JSONObject();
		json.put("component_appid", ComponentConfig.APPID);
		json.put("component_appsecret", ComponentConfig.APPSECRET);
		json.put("component_verify_ticket", componentVerifyTicket);
		//使用POST請求,獲取請求結果
		String API_COMPONENT_TOKEN_URl = WeixinImSetting.OPEN_URL_COMPONENTTOKEN;
		String responseData = HttpSend.httpPost(API_COMPONENT_TOKEN_URl, json.toString(),null);//此處爲封裝的工具類,發送的是HTTPS請求

		JSONObject postData = JSONObject.fromObject(responseData);
		log.info("====================返回post結果:" + postData);

		String token = (String) postData.get("component_access_token");  //第三方平臺 access_token
		Integer expires_in = (Integer) postData.get("expires_in");     //有效期,單位:秒
		log.info("getAccessTokenInstant-result:"+json);
		webChatCatchUtil.setWeixinOpenComponentAccessToken(token,expires_in); //寫入緩存
		return token;
	}

結果參數示例:

component_access_token:第三方平臺令牌;expires_in:令牌有效時間

{
  "component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",
  "expires_in": 7200
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章