网站微信公众平台总是报错 {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [70D7Ma0416vr70!]"} ,应该是access_token过时了,但直接用浏览器访问$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; 这个地址获取的access_token是正常的。php
由于网站的access_token是缓存在数据库中的,用这个函数获取和更新的。发现即便新获取的access_token也是当即过时,很纳闷。
数据库
public function get_access_token($db) { $ret = $db->getRow("SELECT * FROM `wxch_config` WHERE `id` = 1"); $appid = $ret['appid']; //AppId 18 $appsecret = $ret['appsecret'];//AppSecret 32 $dateline = $ret['dateline']; $time = time(); if(($time - $dateline) > 7200) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $ret_json = $this->curl_get_contents($url); //access_token 150 $ret = json_decode($ret_json); if($ret->access_token){ $db->query("UPDATE `wxch_config` SET `access_token` = '$ret->access_token',`dateline` = '$time' WHERE `wxch_config`.`id` =1;"); } } return $db->getOne("SELECT access_token FROM `wxch_config` WHERE `id` = 1"); }
浏览器里:5_kaRdp42zead-_QRaArOEKTeNhNDWCdceXKiVv5QnyDiFuXS30KXnffvj9-hy6fN_UM-AS5OQGSlMOvNUn-psWIk0uQUpDT5oTmqtS_kohnZ88QrrUyiuV47bC7crsWV-o6o2FGQOxi_C5TeiLTIdACAVDSjson
数据库里保存的:5_kaRdp42zead-_QRaArOEKTeNhNDWCdceXKiVv5QnyDiFuXS30KXnffvj9-hy6fN_UM-AS5OQGSlMOvNUn-psWIk0uQUpDT5oTmqtS_kohnZ88QrrUyiuV47bC7crsWV-o6o2FGQOxi_C5TeiLTIdapi
原来是数据库定义的长度是150 ,获取的access_token的长度是156 浏览器
估计微信那边又调整access_token的长度了缓存
把数据库中access_token长度改成156 , 问题解决。微信