3 个回复
CMSYOU - CMS企业网站定制专家
赞同来自:
获取小程序全局后台接口调用凭据,有效期最长为7200s,开发者需要进行妥善保存;
有两种调用模式: 1. 普通模式,access_token 有效期内重复调用该接口不会更新 access_token,绝大部分场景下使用该模式;2. 强制刷新模式,会导致上次获取的 access_token 失效,并返回新的 access_token;
该接口调用频率限制为 1万次 每分钟,每天限制调用 50万 次;
与getAccessToken获取的调用凭证完全隔离,互不影响。该接口仅支持 POST JSON 形式的调用;
如使用云开发,可通过云调用免维护 access_token 调用;
如使用云托管,也可以通过微信令牌/开放接口服务免维护 access_token 调用;
将phpcms中原有的getAccessToken接口换成getStableAccessToken。
CMSYOU - CMS企业网站定制专家
赞同来自:
POST https://api.weixin.qq.com/cgi-bin/stable_token
属性 类型 必填 说明
grant_type string 是 填写 client_credential
appid string 是 账号唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且账号没有异常状态)
secret string 是 账号唯一凭证密钥,即 AppSecret,获取方式同 appid
force_refresh boolean 否 默认使用 false。1. force_refresh = false 时为普通调用模式,access_token 有效期内重复调用该接口不会更新 access_token;2. 当force_refresh = true 时为强制刷新模式,会导致上次获取的 access_token 失效,并返回新的 access_token
属性 类型 说明
access_token string 获取到的凭证
expires_in number 凭证有效时间,单位:秒。目前是7200秒之内的值。
/**
* 发起一个HTTP/HTTPS的请求
* @param $url 接口的URL
* @param $params 接口参数 array('content'=>'test', 'format'=>'json');
* @param $method 请求类型 GET|POST
* @param $multi 图片信息
* @param $extheaders 扩展的包头信息
* @return string
*/
public static function request( $url , $params = array(), $method = 'GET' , $multi = false, $extheaders = array())
{
if(!function_exists('curl_init')) exit('Need to open the curl extension');
$method = strtoupper($method);
$ci = curl_init();
curl_setopt($ci, CURLOPT_USERAGENT, 'PHP-SDK OAuth2.0');
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ci, CURLOPT_TIMEOUT, 3);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ci, CURLOPT_HEADER, false);
$headers = (array)$extheaders;
switch ($method)
{
case 'POST':
curl_setopt($ci, CURLOPT_POST, TRUE);
if (!empty($params))
{
if($multi)
{
foreach($multi as $key => $file)
{
$params[$key] = '@' . $file;
}
curl_setopt($ci, CURLOPT_POSTFIELDS, $params);
$headers[] = 'Expect: ';
}
else
{
curl_setopt($ci, CURLOPT_POSTFIELDS, http_build_query($params));
}
}
break;
case 'DELETE':
case 'GET':
$method == 'DELETE' && curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
if (!empty($params))
{
$url = $url . (strpos($url, '?') ? '&' : '?')
. (is_array($params) ? http_build_query($params) : $params);
}
break;
}
curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
curl_setopt($ci, CURLOPT_URL, $url);
if($headers)
{
curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
}
$response = curl_exec($ci);
curl_close ($ci);
return $response;
}
CMSYOU - CMS企业网站定制专家
赞同来自:
在微信公众号开发接口中,这两个接口都可以获取到 access_token ,区别就在于:
「获取接口调用凭据(https://api.weixin.qq.com/cgi-bin/token)」每调用一次接口就会刷新一次 access_token ,上次获取到的access_token就会失效;
「获取稳定版接口调用凭据(https://api.weixin.qq.com/cgi-bin/stable_token)」在普通模式下, access_token 在有效期内重复调用该接口都不会刷新 access_token ,会直接返回有效期内的 access_token ,这样可以避免 access_token 因为重复调用获取接口被刷新掉、过期等情况出现。
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postData = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postData,
'timeout' => 15 * 60 // 超时时间(单位:s)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
//使用方法
$data['grant_type'] = 'client_credential';
$data['appid'] = $appid;
$data['secret'] = $appsecret;
$url = 'https://api.weixin.qq.com/cgi-bin/stable_token';
$response = json_decode(send_post($url, json_encode($data)), true);
$access_token = $res['access_token'];
最新活动:2024-06-24 11:57
浏览:489 次
关注:1 人
Copyright © 2008-2024 CMSYOU - 互助问答社区 - 粤ICP备10060801号-3 RSS Feed
欢迎加入QQ群(346494585) “让我们一起来学习CMS建站吧!”
要评论问题请先登录或注册