我在网页上出现的结果和视屏中一样,可在微信手机端就是不出现菜单,求助,问题在哪??

来源:2-2 自定义菜单代码实现

晓为文杰

2016-09-08 20:40

MjyxwFWzRV8r4Nw_wUj51fUjfg-dzmKsMKdaweUfd7t3-GYg106H86j3Do_f3vyayfMn7sbcj-wTEhHDFh70to-1KwKpEYhYM1HT-G-izwFAVRJJ1cDsWggubCixgxJEDNEfABARBS
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=MjyxwFWzRV8r4Nw_wUj51fUjfg-dzmKsMKdaweUfd7t3-GYg106H86j3Do_f3vyayfMn7sbcj-wTEhHDFh70to-1KwKpEYhYM1HT-G-izwFAVRJJ1cDsWggubCixgxJEDNEfABARBSarray(1) { ["button"]=> array(3) { [0]=> array(3) { ["name"]=> string(27) "%E8%8F%9C%E5%8D%95%E4%B8%80" ["type"]=> string(5) "click" ["key"]=> string(5) "item1" } [1]=> array(2) { ["name"]=> string(27) "%E8%8F%9C%E5%8D%95%E4%BA%8C" ["sub_button"]=> array(3) { [0]=> array(3) { ["name"]=> string(18) "%E6%AD%8C%E6%9B%B2" ["type"]=> string(5) "click" ["key"]=> string(5) "songs" } [1]=> array(3) { ["name"]=> string(18) "%E7%94%B5%E5%BD%B1" ["type"]=> string(4) "view" ["url"]=> string(20) "http://www.baidu.com" } [2]=> array(3) { ["name"]=> string(9) "%E6%AD%8C" ["type"]=> string(4) "view" ["url"]=> string(17) "http://www.qq.com" } } } [2]=> array(3) { ["name"]=> string(18) "%E5%9B%BE%E7%89%87" ["type"]=> string(4) "view" ["url"]=> string(18) "http://www.163.com" } } }{"button":[{"name":"菜单一","type":"click","key":"item1"},{"name":"菜单二","sub_button":[{"name":"歌曲","type":"click","key":"songs"},{"name":"电影","type":"view","url":"http:\/\/www.baidu.com"},{"name":"歌","type":"view","url":"http:\/\/www.qq.com"}]},{"name":"图片","type":"view","url":"http:\/\/www.163.com"}]}NULL



部分代码:

function http_curl($url,$type='get',$res='json',$arr=''){

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

if($type=='post'){

curl_setopt($ch,CURLOPT_POST,1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);

}

$output=curl_exec($ch);

curl_close($ch);

if($res=='json'){

if(curl_errno($ch)){

return curl_error($ch);

}else{

return json_decode($output,true);

}

}

}

    

public function getWxAccessToken(){

if($_SESSION['access_token'] && $_SESSION['expire_time']>time()){

return $_SESSION['access_token'];

}else{

   $appid='wxb7a1e21ed61a90a2';

$appsecret='d4624c36b6795d1d99dcf0547af5443d';

$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

$res=$this->http_curl($url,'get','json');

$access_token=$res['access_token'];

$_SESSION['access_token']=$access_token;

$_SESSION['expire_time']=time()+7000;

return $access_token;

}

}

    function definedItem(){

header('Content-type: text/html; charset=utf-8');

echo $access_token=$this->getWxAccessToken();

    echo '<br />';

echo $url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;

$postArr=array(

  'button'=> array(

       array(

'name'=>urlencode('菜单一'),

'type'=>'click',

'key'=>'item1',

),

  

array(

'name'=>urlencode('菜单二'),

'sub_button'=>array(

array(

'name'=>urlencode('歌曲'),

'type'=>'click',

'key'=>'songs',

),

array(

'name'=>urlencode('电影'),

'type'=>'view',

'url'=>'http://www.baidu.com',

),

array(

'name'=>urlencode('歌'),

'type'=>'view',

'url'=>'http://www.qq.com',

),

),

 

),

array(

'name'=>urlencode('图片'),

'type'=>'view',

'url'=>'http://www.163.com',

),

            ),

);

echo '<hr/>';

        var_dump($postArr);

   echo '<hr/>';

        

echo $postJson=urldecode(json_encode($postArr));

$res=$this->http_curl($curl,'post','json',$postJson);

   echo '<hr/>';

var_dump($res);

}


写回答 关注

1回答

  • 炫彩年华
    2016-09-09 14:49:50
    已采纳

    function getWxAccessToken()
    {
       session_start();
       //header("Content-Type:text/html;charset=utf-8");
       $time=time();
       if ($_SESSION['accessToken'] && $time<$_SESSION['expirytime']) {
           return $this->accessToken=$_SESSION['accessToken'];
       }
       $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $this->appid . '&secret=' . $this->appsecret;
       $res = $this->http_curl($url);
       if ($res) {
           $tokenArray = json_decode($res, true);
           if ($tokenArray['access_token']) {
               $_SESSION['accessToken']=$tokenArray['access_token'];
               $_SESSION['expirytime']=time()+7000;
               return $this->accessToken = $_SESSION['accessToken'];
           }
       } else {
           return false;
       }
    }

    应该是token的问题,你把if ($_SESSION['accessToken'] && $time<$_SESSION['expirytime']) {
           return $this->accessToken=$_SESSION['accessToken'];
       }这句给注释掉,先不用session,通过http请求获取token就可以了

PHP微信公众平台开发高级篇—自定义菜单

自定义菜单是微信开发中必不可少的环节,约吗?

28920 学习 · 81 问题

查看课程

相似问题