微信自定义菜提示 “{“errcode”:40001,”errmsg”:”invalid credential”}”

微信接口说明只是简单的一句话带过:“通过POST一个特定结构体,实现在微信客户端创建自定义菜单。”

实在令人摸不着头脑, 网上找的代码总是 ”{“errcode”:40001,”errmsg”:”invalid credential”}”。

后台发现token和access_token原来是不同的概念,token是在微信后台选择开发模式的时候填写的,而access_token则是通过接口调用生成的。调用的语句是:

[list]
[*]https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
[/list]

结果会返回一个json格式的access_toke值。注意 json_decode()解析json后的结果是对象,原来以为是数组呢,又长见识了。。所以access_token 是 $weixindata->access_token 而不是$weixindata['access_token']。

如果你不想麻烦也可以到以下网址提交生成你的菜单。

[list]
[*]http://www.xjabc.net/weixinjiekoukaifa/menu.php
[/list]

微信菜单并不是在客户打开微信的时候实时生成的,而已运行一次代码把数据提交到微信后台的,说白了,微信平台连做一个提交表单的工作都省略了,再次bs一下微信平台,体验实在不是一般烂。

header(“Content-type: text/html; charset=utf-8″);
$APPID=APPID;
$APPSECRET=APPSECRET;
$jsondata=file_get_contents(“https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=”.$APPID.”&secret=”.$APPSECRET);
$weixindata=json_decode($jsondata);
$ACCESS_TOKEN=$weixindata->access_token;
$data = ‘{
“button”:[
{
"type":"click",
"name":"获取密码1",
"key":"get_password"
},
{
"type":"click",
"name":"锁定账户",
"key":"lock_acount"
},
{
"type":"click",
"name":"解锁账户",
"key":"unlock_acount"
}]
}’;
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, “https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$ACCESS_TOKEN}”);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, “POST”);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)’);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
echo ‘Errno’.curl_error($ch);
}

curl_close($ch);
var_dump($tmpInfo);
?>



祝你好运

你可能感兴趣的:(weixin)