微信三方平台之component_access_token(微信第三方平台有哪些)

第三方平台component_access_token(第三方平台compoment_access_token是第三方平台授权流程中接口的调用凭据,简称令牌。每个令牌都存在有效期(2小时),并且是有限制的,所以这里我们需要好令牌的管理,在令牌快过期时(比如1小时55分)再次进行刷新请求获取新的令牌。)。

在我们获取到服务器推送过来的component_verify_ticket后,需要将其作为参数,向服务器发送请求来获取component_access_token。

接口调用请求说明

http请求方式: POST(请使用https协议)

https://api.weixin.qq.com/cgi-bin/component/api_component_token

POST数据示例:

{

"component_appid":"appid_value" ,

"component_appsecret": "appsecret_value",

"component_verify_ticket": "ticket_value"

}

参数说明

参数 说明
component_appid 第三方平台appid
component_appsecret 第三方平台appsecret
component_verify_ticket 微信后台推送的ticket,此ticket会定时推送

component_appid和component_appsecret在三方平台详情页查看。

返回说明

正常情况,微信会返回如下json数据包:

{

"component_access_token":"61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",

"expires_in":7200

}

结果参数说明

参数 说明
component_access_token 第三方平台access_token
expires_in 有效期

具体程序实现:

public function get_component_access_token()

$res = $this->component_detail();//获取第三方平台基础信息

$last_time = $res['token_time'];//上一次component_access_token获取时间

$component_access_token = $res['component_access_token'];//获取数据查询到的component_access_token

$difference_time = $this->validity($last_time);//上一次获取时间与当前时间的时间差

//判断component_access_token是否为空或者是否超过有效期

if(empty($component_access_token) || $difference_time>7000){

$component_access_token = $this->get_component_access_token_again();

}

return $component_access_token;

}

//获取第三方平台基础信息

public function component_detail(){

$res = M('Public')->where(array('id'=>1))->find();

return $res;

}

//重新获取component_access_token

public function get_component_access_token_again(){

$url = 'https://api.weixin.qq.com/cgi-bin/component/api_component_token';

$tok = $this->component_detail();

$param ['component_appid'] = $tok['appid'];

$param ['component_appsecret'] = $tok['appsecret'];

$param ['component_verify_ticket'] = $tok['componentverifyticket'];

$data = post_data ( $url, $param );

$token['component_access_token'] = $data ['component_access_token'];

$token['token_time'] = date("Y-m-d H:i:s");

M('Public') ->where(array('id'=>1))->setField($token);

return $data['component_access_token'];

}

//获取时间差

public function validity($time){

$current_time = time();

$difference_time = $current_time - strtotime($time);

return $difference_time;

}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注