下载鸥 > 网站下载 > 开发教程 > 帝国CMS

帝国cms怎样分享到微信好友、朋友圈带图片与简介

418 2021-06-07 02:00:02

收藏
微信作为我们的国民app流量很大,简单的js分享往往只有一个二维码或者链接,但我们怎样分享到微信好友?朋友圈带图片与简介呢?

帝国cms怎样分享到微信好友、朋友圈带图片与简介

前置条件

1、必须有公众号
2、公众号中需要填写你的域名为安全域名
 

一、部署jssdk.php到根目录见附件

相关源码如下
<?php
class JSSDK {
  private $appId;
  private $appSecret;

  public function __construct($appId, $appSecret) {
    $this->appId = $appId;
    $this->appSecret = $appSecret;
  }

  public function getSignPackage() {
    $jsapiTicket = $this->getJsApiTicket();
    $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $timestamp = time();
    $nonceStr = $this->createNonceStr();

    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

    $signature = sha1($string);

    $signPackage = array(
      "appId"     => $this->appId,
      "nonceStr"  => $nonceStr,
      "timestamp" => $timestamp,
      "url"       => $url,
      "signature" => $signature,
      "rawString" => $string
    );
    return $signPackage; 
  }

  private function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }

  private function getJsApiTicket() {
    // 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;
  }

  private function getAccessToken() {
    // 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;
  }

  private function httpGet($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;
  }
}
?>
 

二、微信公众号中设置JS安全域

公众号设置--功能设置--JS接口安全域名
 

三、修改文章模板

在</body>前面增加模版变量,填入代码,appid和appsecret填入你的微信公众号相关的信息
<?
//开始微信分享代码
require '../../jssdk.php';
$appid = '******';
$appsecret = '******';
$jssdk = new JSSDK($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文章分享到微信好友与带图片分享到微信朋友圈的功能。

本文地址:https://xzo.com.cn/develop/empire/1020.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于帝国CMS


帝国cms是一款功能极为强大的cms程序,性能强悍、安全性高,可轻松支持10万数据,高级开发人员可制作出能容纳千万数据量的网站,是国内最出色的开源cms程序之一,推荐企业用户使用

当前最新版本为7.5,8.0版本即将上线,新版本的核心优化点在于多终端的适配。

推荐帝国CMS开发教程
帝国cms百度推送插件怎样将http改成https
帝国cms百度推送插件怎样将http改成https

帝国cms百度推送插件流传十分广,但有些https站点却推送了http的链接,这无疑十...

9 697
帝国cms怎样将信息来源befrom外链转内链?
帝国cms怎样将信息来源befrom外链转内链?

很多技术分享型站点转载了外站不少信息,部分有素质的站长会展示信息来源并链...

27 3943
帝国cms怎样将一二三级置顶改为首页栏目置顶等其他名字?
帝国cms怎样将一二三级置顶改为首页栏目置顶等其他名字?

帝国cms推荐、头条级别要改名都可以在栏目设置(栏目-头条/推荐级别)里进行修...

1 493
帝国cms安装模板里没有install文件夹怎么办?
帝国cms安装模板里没有install文件夹怎么办?

许多客户在使用帝国cms建站后想要再做一个网站,但复制所有的文件到新服务器...

0 459
帝国cms后台DoTimeRepage.php一直刷新写满日志了怎么办?
帝国cms后台DoTimeRepage.php一直刷新写满日志了怎么办?

如果平时喜欢挂着帝国cms网站后台不关闭,又留心了网站日志的朋友就会发现DoT...

1 618
帝国CMS内容页怎样用js实现点击改变字号大小?
帝国CMS内容页怎样用js实现点击改变字号大小?

许多帝国cms开发的小说站点、文字资料站点要考虑目标用户的不同而设置不同...

1 476
帝国CMS在JS调用登陆模板中调用会员头像
帝国CMS在JS调用登陆模板中调用会员头像

我们在开发帝国cms登陆模板时经常需要调用会员头像,但帝国CMS默认并没有提供...

0 382
高危预警:帝国cms for Excel批量导入插件未验证后台权限
高危预警:帝国cms for Excel批量导入插件未验证后台权限

帝国cms for Excel批量导入插件高危预警:未验证后台权限 。...

3 170
推荐插件
帝国cms百度AI黑白图像上色api接口对接插件
帝国cms百度AI黑白图像上色api接口对接插件

百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...

0 420
帝国cms百度文字识别ocr接口对接插件
帝国cms百度文字识别ocr接口对接插件

许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...

0 453
帝国cms自动给正文关键词添加tag内链
帝国cms自动给正文关键词添加tag内链

帝国cms有自带的给关键词添加内链功能,但需要手动添加关键词,容易出现疏漏和...

0 824
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 999
帝国cms纳米数据接口(足球比赛中最新数据)
帝国cms纳米数据接口(足球比赛中最新数据)

帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...

0 391
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...

0 761
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 1111
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 447
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入