微信自定义菜提示 “{“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一下微信平台,体验实在不是一般烂。

<?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);
?>



祝你好运
引用中的异常信息显示错误码为400,错误消息为"caused: dom name can only have these characters: 0-9a-zA-Z-._:, current: DEFAULT_GROUP@@providers:com.project.api.Api$Iface:1.0.0:" 。 引用中说明了错误码400可能是由于参数请求错误导致的,例如前端组装参数时使用了逗号",",但后台使用Integer进行接收。 引用中展示了一个实现了Api接口的类,其中包括一个get方法。 根据你的问题"ErrCode:-400, ErrMsg:dataId invalid",根据引用中的错误消息,可以推断出是由于dataId不合法导致的。根据引用的内容,无法确定具体的dataId是什么,但可以通过检查dataId是否符合规范来解决此问题。123 #### 引用[.reference_title] - *1* *3* [解决 dubbo在nacos注册出现ErrCode:400, ErrMsg:caused: dom name can only have these characters: 0-9a-...](https://blog.csdn.net/wuxiong1028/article/details/112984767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [http 400错误提示解决办法](https://blog.csdn.net/qq_30434271/article/details/124805818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值