微信公众号开发中遇到的几个bug

一、测试自定义菜单接口时中文菜单名显示为null

     设置的中文菜单名,中文未经过编码和解码过程,设置的中文菜单名在最后的微信服务器返回的json格式数据中显示为null。

     解决办法:将中文先用unecode方法编码,最后再将菜单数组用undecode解码,再传给微信服务器。方法最上面加上header("content-type=text/html;charset=utf-8"),编码方式必须是utf-8,才能在微信公众平台在线测试接口。

 

二、自定义菜单中的菜单类型type="click"(或"view")必须小写

      大写CLICK和VIEW会出错,错误提示:must use utf-8 charse。

 

三、自定义菜单类型type为view时,设置的url必须有值,设置为"",会出错

      url设置为"",或url不正确,修改后的菜单名都不会得到更新。

 

四、测试号接口调用频次有限

    微信公众号开发中遇到的几个bug

    微信公众号开发中遇到的几个bug

    解决办法:将access_token存起来

     下面的是采用了wechat-php-sdk框架

   

     session_start();
        if($_SESSION[‘access_token‘] && $_SESSION[ ‘expire_time‘] > time()) {
            return $_SESSION[‘access_token‘];
        }
        else {
            $appid = ‘wx6615a1d7a0d6489d‘;
            $appsecret= ‘2d8bfa2c72f6ae8f58f090c56bf2cd7e‘;
            //获取access_token 接口调用凭证
            $access_token = $weObj->checkAuth($appid,$appsecret);
            $access_token = $res[‘access_token‘];
            $_SESSION[‘access_token‘] = $access_token;
            $_SESSION[‘expire_time‘] = time()+7000;
            return $access_token;
        }

 

五、自定义菜单时,更改菜单名之后微信公众号上得不到及时更新

    菜单未得到更新的情况:一是,写的菜单数组代码语法错误,代码有问题;可先测试一下接口,测试代码见我写的微信公众号开发之自定义菜单

                                   二是,有的时候我们在多个环境中去调用access_token,会出现改变了文件却显示的是前一个文件中的菜单的情况;下面引入一位博友写的总结:

       如果有第二地方也请求同一个token的话,那么第一个token会在5分钟之内过期。这也就说明了,为什么在我搭建好第二个环境的时候,老环境就出现了invalid credential, access_token is invalid or not latest hint 这种问题。因为这两个环境用的是同 一个AppID和AppSecret来取得的access_token,而这个access_token的取得并不是在服务器启动的时候,而且是在需要调用接口的画面初期化的时候去取得的。

我的理解是在多个环境中去调用access_token,当在另一个环境中调用access_token时,在一定时间内前一个环境中获取的access_token还未过期,所以在这段时间中显示的是前一个环境中设置的菜单。

access_token的获 取和服务器什么时候启动没有直接的关系,有直接关系的是初次调用接口是什么时候。

注:修改回复消息之后可以在公众号立即看到更新,但是修改菜单之后,公众号不会马上更新菜单,修改菜单代码之后,最好是取消公众号关注,然后再刷新测试号管理(以测试号为例)界面,再扫描二维码重新关注。

 

微信公众号开发中遇到的几个bug

上一篇:微信小程序demo2


下一篇:比微信落后了 Facebook Messenger上线移动支付