收藏
回答

麻烦请教JSSDK静态页分享IOS无缩略图安卓正常?

页面地址 https://www.5iedu.vip/zt/daxue/

页面代码

    
url = location.href.split('#')[0];  
url = encodeURIComponent(url);    
  $.ajax({    
    type : "get",    
    url : "http://www.5iedu.vip/zt/jssdk.php?url="+url,//替换网址,xxx根据自己jssdk文件位置修改    
    dataType : "jsonp",    
    jsonp: "callback",    
    jsonpCallback:"success_jsonpCallback",    
    success : function(data){    
        wx.config({   
        debug:false,   
appId: data.appId,    
timestamp: data.timestamp,    
nonceStr: data.nonceStr,    
signature: data.signature,    
jsApiList: [    
       "onMenuShareTimeline", //分享给好友    
       "onMenuShareAppMessage", //分享到朋友圈    
       "onMenuShareQQ"//分享到QQ    
       "onMenuShareWeibo" //分享到微博    
]    
});    
},    
                error:function(data){    
                    alert("连接失败!");    
                }    
});    
  wx.ready(function (){    
  var shareData = {    
  title: '中国正规大学高校名单大全 | 教育部公布具有招生资格的大学高校名单 - 升学资讯网',    
  desc: '中国正规高校大学名单包括了全国所有大学,升学资讯网同时提供全国高校动态、高考信息、升学考试政策、高考志愿填报、高校招生简章、高校录取分数线、学业规划、学习方法等,助力学子高考及高考志愿填报...',//这里请特别注意是要去除html    
  link: 'https://www.5iedu.vip/zt/daxue/',    
  imgUrl: 'https://www.5iedu.vip/zt/daxue/img/share.jpg'    
  };    
  wx.onMenuShareAppMessage(shareData);    
  wx.onMenuShareTimeline(shareData);    
  wx.onMenuShareQQ(shareData);    
  wx.onMenuShareWeibo(shareData);    
    });    


JSSDK代码

appId = $appId;    
    $this->appSecret = $appSecret;    
$this->url = $url;    
  }    
    
    
  public function getSignPackage() {    
    $jsapiTicket = $this->getJsApiTicket();    
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";    
   // $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";    
$url =$this->url;    
    $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;     
  }    
    
    
  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;    
  }    
}    
    
$jssdk = new JSSDK("wx16037dfc2f8c****", "7bc91cd4d49558110a8d91c00f2e****",$url);//按照自己的公众号填写    
$signPackage = $jssdk->GetSignPackage();    
// var_dump($signPackage);  
$tmp=json_encode(array ('appId'=>$signPackage["appId"],'timestamp'=>$signPackage["timestamp"],'nonceStr'=>$signPackage["nonceStr"],'signature'=>$signPackage["signature"],'url'=>$signPackage["url"]));    
$callback = $_GET['callback'];    
echo $callback.'('.$tmp.')';    
exit;    
?> 
最后一次编辑于  2020-01-20
回答关注问题邀请回答
收藏
登录 后发表内容
问题标签