实在令人摸不着头脑, 网上找的代码总是 ”{“errcode”:40001,”errmsg”:”invalid credential”}”。
后台发现token和access_token原来是不同的概念,token是在微信后台选择开发模式的时候填写的,而access_token则是通过接口调用生成的。调用的语句是:
- https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
结果会返回一个json格式的access_toke值。注意 json_decode()解析json后的结果是对象,原来以为是数组呢,又长见识了。。所以access_token 是 $weixindata->access_token 而不是$weixindata['access_token']。
如果你不想麻烦也可以到以下网址提交生成你的菜单。
- http://www.xjabc.net/weixinjiekoukaifa/menu.php
微信菜单并不是在客户打开微信的时候实时生成的,而已运行一次代码把数据提交到微信后台的,说白了,微信平台连做一个提交表单的工作都省略了,再次bs一下微信平台,体验实在不是一般烂。
<?php 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); ?>
祝你好运