微信JS-SDK實際分享功能


為了凈化網絡,整頓誘導分享及誘導關注行為,微信於2014年12月30日發布了《微信公眾平台關於整頓誘導分享及誘導關注行為的公告》,微信平台開發者發現,原有的微信分享功能不能用了,在iphone手機上,顯示為當前頁的鏈接,之前設置的圖標和標題等都沒有了。雖然在部分android手機上還可以用,但最近微信升級后,分享功能也不正常了。正在苦於微信分享該怎么解決時,微信於2015年1月10日即時發布了開放JS-SDK,為微信網站的開發提供了強大的js功能。這里僅就分享功能的使用進行一些描述。

微信JS-SDK demo http://demo.open.weixin.qq.com/jssdk/#menu-device

微信JS-SDK 說明文檔:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

下面的代碼,服務器端使用的是php。

步驟1 生成簽名

登錄你的微信平台,點擊“公眾號設置”。

設置JS接口安全域名。這里填寫的是一級域名,不帶www和http。最多可以設置三個域名。設置完后點擊確定。(多說一句,相比以前的分享沒有任何域名限制,這里設置安全域名,目的是為了當發現此公眾平台發現誘導分享行為時,可以根據此域名追溯到所有分享出去的鏈接,以及通過這些鏈接增加的粉絲。這樣,微信就可以牢牢控制了你的微信平台,一旦發現違規,讓分享鏈接失效,刪除掉誘導行為增加的粉絲,是瞬間就可以完成的。因此,微信平台的開發者,一定要合理來使用分享功能,不要因小失大。等到你的微信平台被封,估計哭都來不及)

 

在開發者中心中獲取你的AppID和AppSecret,接下來在獲取令牌時,需要這兩個信息。

 

  1 <?php
  2     $appid = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
  3     $secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  4     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
  5     function https_request($url){
  6         $ch = curl_init();
  7         curl_setopt($ch, CURLOPT_URL, $url);
  8         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  9         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
 10         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 11         $output = curl_exec($ch);
 12         curl_close($ch);
 13         $jsoninfo = json_decode($output, true);
 14         return $jsoninfo;
 15     }
 16     $code = https_request($url);//獲取token
 17  function getSignPackage($jsapiTicket,$url,$timestamp,$nonceStr) {
 18     // 這里參數的順序要按照 key 值 ASCII 碼升序排序
 19     $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
 20     $signature = sha1 ( $string );
 21 
 22     $signPackage["appId"] = 'wx85677fe9faa3a0a5';
 23     $signPackage["nonceStr"] = $nonceStr;
 24     $signPackage["timestamp"] = $timestamp;
 25     $signPackage["url"] = $url;
 26     $signPackage["signature"] = $signature;
 27     $signPackage["rawString"] = $string;
 28     return $signPackage;
 29 }
 30 //生成隨機字符串
 31 function createNonceStr($length = 16) {
 32     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 33     $str = "";
 34     for ($i = 0; $i < $length; $i++) {
 35         $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
 36     }
 37     return $str;
 38 }
 39 
 40 $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$code['access_token'];//ticket
 41 $res = https_request($url);
 42 // 注意 URL 一定要動態獲取,不能 hardcode.
 43 $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
 44 $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
 45 $timestamp = time();
 46 $signPackage = getSignPackage($res['ticket'],$url,$timestamp,createNonceStr());
 47 ?>
 48 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 49 <html xmlns="http://www.w3.org/1999/xhtml">
 50 <head>
 51     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 52     <title>產品管理</title>
 53 
 54     <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
 55     <script type="text/javascript">
 56         wx.config({
 57             debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
 58             appId: '<?php echo $appid?>', // 必填,公眾號的唯一標識
 59             timestamp: <?php echo $signPackage['timestamp']?>, // 必填,生成簽名的時間戳
 60             nonceStr: '<?php echo $signPackage['nonceStr']?>', // 必填,生成簽名的隨機串
 61             signature: '<?php echo $signPackage['signature']?>',// 必填,簽名,見附錄1
 62             jsApiList: [ // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
 63                 'onMenuShareTimeline',//這里不知道你用的地理接口是哪個就兩個都寫上了
 64                 'onMenuShareAppMessage'
 65             ]
 66         });
 67         wx.ready(function(){
 68             // 獲取“分享到朋友圈”按鈕點擊狀態及自定義分享內容接口
 69             wx.onMenuShareTimeline({
 70                 title: 'Hello world', // 分享標題
 71                 link:"",
 72                 imgUrl: "" // 分享圖標
 73             });
 74             // 獲取“分享給朋友”按鈕點擊狀態及自定義分享內容接口
 75             wx.onMenuShareAppMessage({
 76                 title: 'Hello world', // 分享標題
 77                 desc: "Hello world", // 分享描述
 78                 link:"",
 79                 imgUrl: "", // 分享圖標
 80                 type: '' // 分享類型,music、video或link,不填默認為link
 81             });
 82         });
 83     </script>
 84     <style type="text/css">
 85         html {
 86             font: 500 14px 'roboto';
 87             color: #333;
 88             background-color: #fafafa;
 89         }
 90         a {
 91             text-decoration: none;
 92         }
 93         ul, ol, li {
 94             list-style: none;
 95             padding: 0;
 96             margin: 0;
 97         }
 98 
 99         p {
100             margin: 0;
101         }
102 
103     </style>
104 </head>
105 
106 <body>
107 <h3>Hello world!<?php echo $appid ?></h3>
108 <p>welecome to GZ!!!!!!!!!!!!!!!!</p>
109 </body>
110 </html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM