tp5.1微信公众号JSSDK 接口分享 坑

今天在用tp5.1 整微信分享接口时 所发生的坑事件

1.报 { "errMsg": "config:invalid signature" } 错误

这个问题比较简单 打印下  signature 看看它是否缺参数 自己仔细去对比 上代码

function shareWx(){
        $request=new Request;
        $jsapi_ticket = $this->getJsApiTicket();
        echo $jsapi_ticket;
        echo '<br>';
        $timestamp=time();
        $noncestr=$this->getRandCode(16);
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
        $signature = 'jsapi_ticket='.$jsapi_ticket.'&noncestr='.$noncestr.'&timestamp='.$timestamp.'&url='.$url;
        echo $signature;
        echo '<br>';
        $signature=sha1($signature);
        $this->assign([
            'name'=>'dfsfdsfds',
            'timestamp'=>$timestamp,
            'noncestr'=>$noncestr,
            'signature'=>$signature,
        ]);
        return $this->fetch('index/share');
    }

2.报errMsg:config:invalid url domain 错误

这个错误是JS接口安全域名 配置的问题

 

JS接口安全域名是否配置,若是已经配置则看是否有http://或者https://,有则去掉

 

测试号:

测试号域名是否填写,注意域名不能带有http://   https://

3.title 及 imgUrl 不显示问题

这个问题我整了很久 最后发现 需要jsApiList 中需要把新旧接口都写上才可使用 真是日了

微信开发文档这样写的

自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)

wx.ready(function () {  //需在用户可能点击分享按钮前就先调用

wx.updateAppMessageShareData({

title: '', // 分享标题

desc: '', // 分享描述

link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

imgUrl: '', // 分享图标

success: function () {

// 设置成功

}

});

自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)

wx.ready(function () {      //需在用户可能点击分享按钮前就先调用

wx.updateTimelineShareData({

title: '', // 分享标题

link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

imgUrl: '', // 分享图标

success: function () {

// 设置成功

}

});

看起来很简单,直接加入到H5网页里面了

wx.config({

debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

appId: '', // 必填,公众号的唯一标识

timestamp: , // 必填,生成签名的时间戳

nonceStr: '', // 必填,生成签名的随机串

signature: '',// 必填,签名

jsApiList: [

'updateAppMessageShareData',
'updateTimelineShareData'

] // 必填,需要使用的JS接口列表

});

其他参数参考根据自己情况填写,并设置debug: true 

测试环境:

微信Web开发者工具,测试接口,ok

苹果X,查看debug的弹出信息,一切ok;分享测试,一切ok

大工搞成。咦,等下,好像漏了什么。。。。。。安卓呢?

结果果然漏了,安卓测试分享朋友圈和发送给好友,自定义分享功能都无效,仅仅分享为一个链接而已。

这个问题苹果手机好的,安卓不行,并且微信web开发者工具测试接口都是好的,那问题应该不是接口调用(后台数据都是一样的),应该是和客户端有关,但又找不到相关资料。

百思不得其姐,困惑了好久,各种度娘也没有找到正确答案。某天突发奇想,新的接口不行,那旧的接口呢?

于是乎测试开始:

加入两个旧分享接口onMenuShareAppMessage和onMenuShareTimeline,然后写了个测试方法

jsApiList: [

    'updateAppMessageShareData',

    'updateTimelineShareData',

    'onMenuShareAppMessage',  //旧的接口,即将废弃

    'onMenuShareTimeline' //旧的接口,即将废弃

]// 必填,需要使用的JS接口列表

获取“分享给朋友”按钮点击状态及自定义分享内容接口(即将废弃)

wx.onMenuShareAppMessage({

title: 'test', // 分享标题

desc: 'test_desc', // 分享描述

link: 'www.jianshu.com', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

imgUrl: '', // 分享图标

type: '', // 分享类型,music、video或link,不填默认为link

dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

success: function () {

// 用户点击了分享后执行的回调函数

}

});

 

然后随便写了个测试发现居然成!功!了! 不过自定义分享内容还是新接口updateAppMessageShareData定义的。

删除旧接口定义再测试,发现仅仅在jsApiList加入旧接口声明也是可以的!

 

问题解决,这个真的是JS-SDK的一个坑。这篇文章希望能帮助到遇到相似问题的同学。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值