求助:微信jssdk分享配置完没有任何反应,跟没配置一样...

发布于 2022-09-07 12:43:13 字数 4846 浏览 33 评论 0

按照教程做了配置,比较直接选择直接获取access_token和jsapi_tikcet没有缓存,但是返回值都是ok的,不知道为什么这样配置之后,选择分享给朋友或者朋友圈,都没有任何反应,也没有看到api返回的值,有好心人能帮我看一下哪儿有问题吗?

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
        <title>测试</title>
        <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    </head>

<body>    
    <div class="page-content">
        
        <?php
            //获取access_token
            $appid = "";//填了appid
            $secret = ""; //填了secret    
            $request_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
            $ch=curl_init();
            curl_setopt($ch,CURLOPT_URL,$request_url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在   
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回文本流,
            $data=curl_exec($ch);
            curl_close($ch);
            $result=json_decode($data,true);
            $access_token = $result['access_token'];
            
            //获取jsapi_ticket
            $request_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
            $ch=curl_init();
            curl_setopt($ch,CURLOPT_URL,$request_url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在   
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回文本流,
            $data=curl_exec($ch);
            curl_close($ch);
            $result=json_decode($data,true);
            $jsapi_ticket = $result['ticket'];
            
            //生成16位字符串
            function generate_noncestr($length = 16){
                $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; 
                $noncestr = "";
                for ( $i = 0; $i < $length; $i++ ){
                    $noncestr .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
                }
                return $noncestr;
            }
            $noncestr = generate_noncestr();
                
            //生成签名
            $timestamp = time();
            $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
            $string1 = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;
            $signature = sha1($string1);
        ?>
        
        <script type="text/javascript">
            
            wx.config({
                debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: '<?php echo $appid; ?>', // 必填,公众号的唯一标识
                timestamp: '<?php echo $timestamp; ?>', // 必填,生成签名的时间戳
                nonceStr: '<?php echo $noncestr; ?>', // 必填,生成签名的随机串
                signature: '<?php echo $signature; ?>',// 必填,签名
                jsApiList: [
                    'onMenuShareTimeline',
                    'onMenuShareAppMessage',
                ] // 必填,需要使用的JS接口列表
            });
            
            wx.ready(function(){
                
                wx.onMenuShareTimeline({
                    title: 'test1', // 分享标题
                    link: 'http://baidu.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: 'https://www.baidu.com/img/baidu_jgylogo3.gif', // 分享图标
                    success: function () {
                    // 用户点击了分享后执行的回调函数
                        alert('成功');
                    },
                    cancel: function() {
                        alert('失败');
                    }
                )};
                
                wx.onMenuShareAppMessage({
                    title: 'test1', // 分享标题
                    desc: 'test baidu', // 分享描述
                    link: 'http://baidu.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: 'https://www.baidu.com/img/baidu_jgylogo3.gif', // 分享图标
                    type: 'link', // 分享类型,music、video或link,不填默认为link
                    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                    success: function () {
                    // 用户点击了分享后执行的回调函数
                        alert('成功');
                    }
                    cancel: function () {
                    // 用户点击了分享后执行的回调函数
                        alert('失败');
                    }
                });
            });
            
            wx.error(function(res){
                alert('error');
            });            
        </script>

    </div>
    </body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

清醇 2022-09-14 12:43:13

我看到你的代码中debug模式是开启的 能否把报错信息截图说明一下 这样方便诊断你的错误在哪儿

春风十里 2022-09-14 12:43:13

打印一下 返回的失败信息 一般失败了肯定会有的

多情癖 2022-09-14 12:43:13

看看PHP是不是报错了,再看看相应的签名字段有没有

画中仙 2022-09-14 12:43:13

signature加密字段要按照字典排序,且URL一定要是当前页面URL,query也必须一致

悟红尘 2022-09-14 12:43:13

各位,实在是抱歉,我查了之后发现是我的js代码写错了一个地方,就是分享到朋友圈最后面的)};应该是});,犯这种低级错误实在让人懊恼,感谢各位的帮忙!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文