微信分享配置与实例

微信公众平台服务器配置

以下就是wx_check.php 的代码,将这个文件放于你服务器域名下新建的【wx_check】文件夹内。

<?php
define("TOKEN", "你的token(任意字符串,与服务器上相同)");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();


class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }


    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if (!empty($postStr)){
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";
                if(!empty( $keyword ))
                {
                      $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }else{
                    echo "Input something...";
                }
        }else {
            echo "";
            exit;
        }
    }
        
    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];    
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}
?>

在这里插入图片描述
发现一个奇怪现象 在文件夹以及文件名前加上 wx_ 前缀之后秒通过验证,所以我这里把名字命名为这个wx_xxx

微信公众号分享开发

开发过程

下载微信示例
里面包含有
在这里插入图片描述
示例代码在sample.php上。
打开sample.php 删除html代码,最后剩下
在这里插入图片描述
上面这一步主要是起到代码与数据分离
然后把sample改一个很牛逼的名字,父文件夹 【PHP】 也改一个。注意,最好用英文
将其放入服务器域名文件夹内根目录t
在这里插入图片描述
新建测试项目,
share.png 为分享时展示的图片,最好为200*200像素尺寸
testshare.php为代码
在这里插入图片描述
然后在你的代码中这样写

<?php
require_once "../牛逼名字/牛逼名字.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
TEST share
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
    /*
     * 注意:
     * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
     * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
     * 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
     *
     * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈:
     * 邮箱地址:weixin-open@qq.com
     * 邮件主题:【微信JS-SDK反馈】具体问题
     * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
     */
    wx.config({
        debug: true,
        appId: '<?php echo $signPackage["appId"];?>',
        timestamp: <?php echo $signPackage["timestamp"];?>,
        nonceStr: '<?php echo $signPackage["nonceStr"];?>',
        signature: '<?php echo $signPackage["signature"];?>',
        jsApiList: [
        // 所有要调用的 API 都要加到这个列表中
        'checkJsApi',
        'onMenuShareTimeline',
        'onMenuShareAppMessage'
    ]
    });

    //当前链接地址
    var gameUrl = 'http://你的域名/testshare/testshare.html';
    var imgUrl = 'http://你的域名/testshare/share.png';
    //分享到朋友数据
    var sharedata = {
        title: '分享测试',
        desc: '分享测试,分享测试,分享测试,分享测试,分享测试,分享测试',
        link: gameUrl,
        imgUrl: imgUrl
    };
    //分享到朋友圈数据 默认和分享朋友一样
    var timelinedata = {
        title: "分享测试",
        link: sharedata.link,
        imgUrl: sharedata.imgUrl
    };
    wx.ready(function () {
        //分享朋友圈
        wx.onMenuShareTimeline(timelinedata);
        //分享给朋友
        wx.onMenuShareAppMessage(sharedata);
    });
</script>
</body>
</html>

将其放入服务器域名内根目录
在这里插入图片描述
浏览器访问这个文件,然后将链接发到微信。微信再打开点击左上角分享到朋友以及分享到朋友圈
在这里插入图片描述
在这里插入图片描述

错误解决

错误1 url domain

开发过程中会碰到无法分享的情况,报错

errmsg config;invalid url domain

这个是因为没有配置好js安全域名

解决方法
  1. 打开微信公众平台
    在这里插入图片描述
  2. 找到【设置】
    在这里插入图片描述
  3. 找到【功能设置】-》【js接口安全域名】-》【设置】
    在这里插入图片描述
  4. 保存
    在这里插入图片描述

错误2 40164 invalid ip xxx

errMsg:config :invalid signature

这是提示非法签名。点击调试

解决办法

输入appid 和 secret。看会不会提示这个问题。如果会则是需要将提示的ip地址加入微信白名单
在这里插入图片描述
(奇怪的是,我之前一直用的好好的,然后服务器的环境从 laragon 换成 phpstudy 就出现这个问题)

错误3 get方法获取不到res

官方的 sample.php的 get方法获取不到res.
在这里插入图片描述

解决办法

如图,把验证改为不验证(有一个问题待验证,就是true改为false之后,是不是白名单就不需要设置了?)
在这里插入图片描述

错误4 找不到文件

在这里插入图片描述
打开链接时,仍然提示非法签名

errMsg:config :invalid signature
解决办法

查看sample.php 的代码
在这里插入图片描述
看看上图所示url是否写对。
上面注释掉的那个url,在调用时不会自动生成上图那两个文件。需要拷贝到项目工程里。且不能是空的。必须有有效内容。
获取有效内容有两种方式
1 用微信的在线调试工具获取相应的值
2 用下图所示的url,没有这两个文件,也能自动生成。这样就有一份文件了
一般我都是用上图那个未注释的url,方便,智能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值