微信公众号开发出现 errcode:48001 的错误
今天在做个人订阅号开发菜单的时候,竟然提出如下的错误:
string(69) "{"errcode":48001,"errmsg":"api unauthorized hint: [_DegOA0418vr32!]"}"
这是完整的代码,而我的 menu.php 代码为如下:
- <?php
- $appid = "xxx";
- $appsecret = "xxx";
- $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
- $output = https_request($url);
- $jsoninfo = json_decode($output, true);
- $access_token = $jsoninfo["access_token"];
- $jsonmenu = '{
- "button":[
- {
- "name":"天气预报",
- "sub_button":[
- {
- "type":"click",
- "name":"北京天气",
- "key":"天气北京"
- },//xiariboke.net
- {
- "type":"click",
- "name":"上海天气",
- "key":"天气上海"
- },
- {
- "type":"click",
- "name":"广州天气",
- "key":"天气广州"
- },
- {
- "type":"click",
- "name":"深圳天气",
- "key":"天气深圳"
- },
- {
- "type":"view",
- "name":"本地天气",
- "url":"http://m.hao123.com/a/tianqi"
- }]
- },
- {
- "name":"夏日工作室",
- "sub_button":[
- {
- "type":"click",
- "name":"公司简介",
- "key":"company"
- },
- {
- "type":"click",
- "name":"趣味游戏",
- "key":"游戏"
- },
- {
- "type":"click",
- "name":"讲个笑话",
- "key":"笑话"
- }]
- }]
- }';
- $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
- $result = https_request($url, $jsonmenu);
- var_dump($result);
- function https_request($url,$data = null){
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- if (!emptyempty($data)){
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- }
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $output = curl_exec($curl);
- curl_close($curl);
- return $output;
- }
- ?>
注意本文所定义的 $appid 和 $appsecret,要替换成为自己的,网上的一个比较出名的 menu 菜单项目,在提交到服务端之后,向微信服务端发送信息,结果就出现了本文刚开始的错误,然后就使用微信公众号调试工具去调试,https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=自定义菜单&form=自定义菜单创建接口%20/menu/create,返回的结果为如下:
- Connection: keep-alive
- Date: Tue, 13 Dec 2016 06:18:39 GMT
- Content-Type: application/json; encoding=utf-8
- Content-Length: 69
- {
- "errcode": 48001,
- "errmsg": "api unauthorized hint: [NiAsia0919vr43!]"
- }
然后提示为:Unauthorized API function
正好跟直接提交 menu.php 文件一致了,很明显应该是微信公众平台未获取 API 权限的问题了,既然有了错误码,直接顺着错误码找一下不就可以了麽,打开微信公众号全局返回码网址查找 48001 的提示码,网址为 http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html。
然后查找:48001,OK,这里有说明:api功能未授权,请确认公众号已获得该接口,可以在公众平台官网-开发者中心页中查看接口权限。
看来还真的是接口权限的问题了,夏日博客赶紧到开发者中心去查看接口权限,原来我的订阅号,是没有开放菜单功能开发权限的,如果你也遇到这个问题,可以先检查一下自己的接口权限,在微信公众号开发》开发》接口权限》界面丰富》自定义菜单,后面显示未获取,就是没有权限了,这里还有说明:获得条件:订阅号必须通过微信认证,服务号自动获得。
既然可以认证,哪就赶紧点击认证吧,结果,到认证页面,又提示如下说明了:
暂不支持个人类型的公众帐号申请微信认证。
好吧,原来个人订阅号是根本认证不了的,怪不得哪么多的订阅号没有菜单选项,如果想要添加公众号菜单的话,看来也只有搞个服务号了,看个人订阅号的权限接口,满满的全是未获得,权限限制太大了,连个微信支付都做不了,我也是醉了。。。
本来先做个判断关注公众号,然后干点什么的,特码到最后一步居然是没权限,和你差不多的,全是未获得,弃坑了,百度搜索做个问题,顺便路过的,留点什么的。。。。