二、令牌:
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
}