求助:微信jssdk分享配置完没有任何反应,跟没配置一样...
按照教程做了配置,比较直接选择直接获取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."×tamp=".$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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我看到你的代码中debug模式是开启的 能否把报错信息截图说明一下 这样方便诊断你的错误在哪儿
打印一下 返回的失败信息 一般失败了肯定会有的
看看PHP是不是报错了,再看看相应的签名字段有没有
signature加密字段要按照字典排序,且URL一定要是当前页面URL,query也必须一致
各位,实在是抱歉,我查了之后发现是我的js代码写错了一个地方,就是分享到朋友圈最后面的)};应该是});,犯这种低级错误实在让人懊恼,感谢各位的帮忙!