7 587 2021-01-30 10:43:23
收藏要做帝国CMS微信分享带缩略图,前提是必须有公众号,且公众号中需要填写你的域名为安全域名才能成功。以下分享接口已采用微信开发文档中最新的接口,网上很多人使用的原接口即将失效了。
第一步:部署jssdk.php到根目录
第二步:微信公众号中设置JS安全域
公众号设置--功能设置--JS接口安全域名
第三步:增加模版变量,填入代码,appid和appsecret填入你的微信公众号相关的信息(模版变量紧挨着</body>,放在它前面):
<?
//开始微信分享代码
require'../../jssdk.php';
$appid='******';
$appsecret='******';
$jssdk=newJSSDK($appid,$appsecret);
$signPackage=$jssdk->GetSignPackage();
//结束微信分享代码
?>
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
//注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
//如果发现在Android不能分享自定义内容,请到官网下载最新的包覆盖安装,Android自定义分享接口需升级至6.0.2.58版本及以上。
//完整JS-SDK文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
wx.config({
debug:!1,
appId:'<?php echo$signPackage["appId"];?>',
timestamp:<?php echo$signPackage["timestamp"];?>,
nonceStr:'<?php echo$signPackage["nonceStr"];?>',
signature:'<?php echo$signPackage["signature"];?>',
jsApiList:[
"updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareWeibo",
"onMenuShareQZone"
]
});
wx.ready(function(){
//在这里调用API
wx.checkJsApi({
jsApiList:["updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareWeibo",
"onMenuShareQZone"],//需要检测的JS接口列表,所有JS接口列表见附录2,
success:function(res){
//alert(JSON.stringify(res));
if(res.errMsg!='checkJsApi:ok'){
alert('请升级您的微信版本');
return;
}
}
});
//分享Demo
//获取“分享给朋友”按钮点击状态及自定义分享内容接口
wx.updateAppMessageShareData({
title:'<?=$navinfor[title]?>',//分享标题
desc:'<?=$navinfor[smalltext]?>',//分享描述
link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接
imgUrl:'<?=$navinfor[titlepic]?>',//分享图标
success:function(){
//设置成功
}
});
//获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
wx.updateTimelineShareData({
title:'<?=$navinfor[title]?>',//分享标题
link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接
imgUrl:'<?=$navinfor[titlepic]?>',//分享图标
success:function(){
//设置成功
}
});
wx.onMenuShareWeibo({
title:'<?=$navinfor[title]?>',//分享标题
desc:'<?=$navinfor[smalltext]?>',//分享描述
link:'http://www.xxx.com<?=$navinfor[titleurl]?>',//分享链接
imgUrl:'<?=$navinfor[titlepic]?>',//分享图标
success:function(){
//用户确认分享后执行的回调函数
},
cancel:function(){
//用户取消分享后执行的回调函数
}
});
});
</script>帝国CMS微信分享jssdk.php代码
<?php
classJSSDK{
private$appId;
private$appSecret;
publicfunction__construct($appId,$appSecret){
$this->appId=$appId;
$this->appSecret=$appSecret;
}
publicfunctiongetSignPackage(){
$jsapiTicket=$this->getJsApiTicket();
$url="http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp=time();
$nonceStr=$this->createNonceStr();
//这里参数的顺序要按照key值ASCII码升序排序
$string="jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
$signature=sha1($string);
$signPackage=array(
"appId"=>$this->appId,
"nonceStr"=>$nonceStr,
"timestamp"=>$timestamp,
"url"=>$url,
"signature"=>$signature,
"rawString"=>$string
);
return$signPackage;
}
privatefunctioncreateNonceStr($length=16){
$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str="";
for($i=0;$i<$length;$i++){
$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);
}
return$str;
}
privatefunctiongetJsApiTicket(){
//jsapi_ticket应该全局存储与更新,以下代码以写入到文件中做示例
$data=json_decode(file_get_contents("jsapi_ticket.json"));
if($data->expire_time<time()){
$accessToken=$this->getAccessToken();
$url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res=json_decode($this->httpGet($url));
$ticket=$res->ticket;
if($ticket){
$data->expire_time=time()+7000;
$data->jsapi_ticket=$ticket;
$fp=fopen("jsapi_ticket.json","w");
fwrite($fp,json_encode($data));
fclose($fp);
}
}else{
$ticket=$data->jsapi_ticket;
}
return$ticket;
}
privatefunctiongetAccessToken(){
//access_token应该全局存储与更新,以下代码以写入到文件中做示例
$data=json_decode(file_get_contents("access_token.json"));
if($data->expire_time<time()){
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appId}&secret={$this->appSecret}";
$res=json_decode($this->httpGet($url));
$access_token=$res->access_token;
if($access_token){
$data->expire_time=time()+7000;
$data->access_token=$access_token;
$fp=fopen("access_token.json","w");
fwrite($fp,json_encode($data));
fclose($fp);
}
}else{
$access_token=$data->access_token;
}
return$access_token;
}
privatefunctionhttpGet($url){
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_TIMEOUT,500);
curl_setopt($curl,CURLOPT_URL,$url);
$res=curl_exec($curl);
curl_close($curl);
return$res;
}
}
?>
本文地址:https://xzo.com.cn/develop/empire/200.html

如果您认可我们的分享,有意与我们合作开展帝国cms网站建设与开发业务或插件定制,请联系右侧在线客服。我们能给您的,就是高质量的模板与售后。
标注了信息来源为下载鸥的文章皆为原创,如果是转载的优质文章,我们也都标注了出处。如果您喜欢我们的文章,请按照下载鸥所标注的文章出处进行标注,谢谢您的配合。

帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用。
当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。
很多帝国CMS网站使用自定义页面制作sitemap或是其他一些重要的页面,如果每次...
帝国cms静态站下载判断设备环境是安卓还是苹果,并自动适配下载地址,如果当前...
帝国cms自带的信息反馈功能,不仅可以实现留言功能,还可以实现像在线报名、反...
如果平时喜欢挂着帝国cms网站后台不关闭,又留心了网站日志的朋友就会发现DoT...
如果直接在帝国cms模板中插入360推送代码,会发现在插入360推送代码后,无法正...
在帝国cms开发过程中,我们经常会遇到这样那样的需求。就如栏目信息的展示,有...
帝国cms网站签到是提升用户黏性与活跃度的重要手段,但签到功能应该怎样开发...
帝国cms标签列表如果做死板的展示可能不大好看,如果能增加一些色彩,无疑会让...
下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...
用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...
百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...
使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...
采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...
帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...
一直没看到好用的帝国cms在线考试插件,所以自己开发了一款。在线考试插件用...
本插件适用于内网用户,可查看单篇文章访问者ip地址。如果添加访问者ip组,可查...