微信分享朋友圈,分享给朋友jssdk

微信页面分享功能jssdk

1,首先要有一个认证了的企业公众号,订阅号或是服务号

2,绑定JS接口安全域名

3,引入微信提供的js 文件

<script type="text/javascript" src="./js/jquery.min.js" ></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js "  charset="utf-8"></script>

4,前端部分这里只贴js分享代码 其它代码可以随便:

<script type="text/javascript">
//微信分享
    var url = window.location.href.split('#')[0];
    var API_URLS ='http://music.szplhy.com/';
    $.getJSON(API_URLS+'/Wechat/sample.php?url='+encodeURIComponent(url), function(json){
        console.log(json);
        var params = {
            debug: false,
            appId: json.appId,
            timestamp: json.timestamp,
            nonceStr: json.nonceStr,
            signature: json.signature,
            jsApiList: [
               'onMenuShareTimeline',
	       'onMenuShareAppMessage',
            ]
        };
		
        wx.config(params);
            var title  = '2018第二届世界无人机大会暨第三届深圳国际无人系统博览会专题';
	    var desc   = '2018年6月22-24日,深圳会展中心等你!';
            var link   = 'http://music.szplhy.com/';
            var imgUrl = 'http://cn-shenzhen.aliyuncs.com/uploadfile/wrj.jpg';
        wx.ready(function(){
	    //分享到朋友圈
            wx.onMenuShareTimeline({  
                title: title,     
	        desc: desc, 
                link: link,
                imgUrl: imgUrl
            });
	    //分享给朋友 
            wx.onMenuShareAppMessage({
                title: title,
		desc: desc, 
                link: link,
                imgUrl: imgUrl
            });			
		
        });
	   wx.error(function(res){
           console.log(res);
         });
    });

</script>

注意 link 那里一定要是绑定的安全域名 否则分享出去会不显示标题  描述和图片

后端php文件(上面js json请求的php)

这里要传入两个参数微信的  appid   和  AppSecret

<?php
require_once "jssdk.php";
//初始化参数检测正确性
header("Access-Control-Allow-Origin:*");//允许所有来源
header("Access-Control-Allow-Method:*");//允许访问方式
$jssdk = new JSSDK("appid", "AppSecret");
$signPackage = $jssdk->GetSignPackage($_GET['url']);
echo json_encode($signPackage,true);exit();

类文件jssdk.php 没有使用任务框架

<?php
class JSSDK {
  private $appId;
  private $appSecret;

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

  public function getSignPackage($url='') {
    $jsapiTicket = $this->getJsApiTicket();

    // 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = $url;

    $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 获取 ticket
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
      $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获取access_token
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
      $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_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}

 

 

发布了29 篇原创文章 · 获赞 3 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览