微信共有サムネイルに関する質問


認証しなければならない公衆番号に共有する権限があるjssdkでネット上の他の方法をするのは効果的ではありません.最大タイトルしかありません.説明とサムネイルはありません.
文書ディレクトリ
  • 1、フロントエンドコード
  • 2、phpバックエンドコードgetJsAPITicket.php
  • 3、エラーチェック方法
  • phpです.以下、詳細な手順を示します.
    注意:
    1、微信の公衆番号は共有する権限があってこそ、後のステップを行うことができる.
    2、公衆番号のバックグラウンドにjs安全ドメイン名を記入し、IPホワイトリストも記入しなければならない.
    1、フロントエンドコード
    
    
    
    
    $(function() {
        //    
        $.ajax({
            url:"http://www.****.com/getJsAPITicket.php",  //    ,     ,             
            type:"Get",
            dataType:"json",
           	data:{"url": encodeURIComponent(window.location.href.split('#')[0])},  //  ,   url      ,       
            success:function(data){
                 wxstart(data, "");
            }
        });
    });
    
    function wxstart(data,url){
    		
    		wx.config({
    			debug: false,
    			appId: data.appId,
    			timestamp: data.timestamp,
    			nonceStr: data.nonceStr,
    			signature: data.signature,
    			jsApiList: [
    				'onMenuShareTimeline',
    				'onMenuShareAppMessage' //      qq      ,    
    			  ]
    		});
    
    		wx.ready(function () {
    			var shareData = {
    				title: '********',	//	  
    				desc: '************',	//	  
    				link: 'http://www.******.com/',	//	   URL,           URL    
    				imgUrl: 'http://www.******.com/logo.png'	//	     
    			};
    			wx.onMenuShareTimeline(shareData);
    			wx.onMenuShareAppMessage(shareData);
    		});
    		wx.error(function (res) {
    		  alert(res.errMsg);//    
    		});
    
    	}
     
    

    2、phpバックエンドコードgetJsAPITicket.php
    $jssdk = new JSSDK("wx3********e70", "6202c9b5a*******c6492271525");
    
    $signPackage = $jssdk->GetSignPackage();
    
    echo json_encode($signPackage);die;
    
    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]";
        $url = urldecode($_GET['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 = "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) {
             $headers = array('User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36');
            $oCurl = curl_init();
            if(stripos($url,"https://")!==FALSE){
                curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
                curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
            }
            curl_setopt($oCurl, CURLOPT_TIMEOUT, 20);
            curl_setopt($oCurl, CURLOPT_URL, $url);
            curl_setopt($oCurl, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
            $sContent = curl_exec($oCurl);
            $aStatus = curl_getinfo($oCurl);
            curl_close($oCurl);
            if(intval($aStatus["http_code"])==200){
                return $sContent;
            }else{
                return false;
            }
          }
    }
    

    3、エラーのチェック
    1、 ツールでホームページを けて、 いがあれば はヒントを えます2、 access_tokenが プラットフォームインタフェースデバッグツールのデバッグを しく できるかどうかhttps://mp.weixin.qq.com/debug/ はjsセキュリティドメイン 、IPホワイトリスト、appSecretエラー3、signatureが しく できるかどうかを http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign4、その の なエラーhttps://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.20000340685689832#62この の 5を て、 しずつ らしています.