爲了淨化網絡,整頓誘導分享及誘導關注行爲,微信於2014年12月30日發佈了《微信公衆平臺關於整頓誘導分享及誘導關注行爲的公告》,微信平臺開發者發現,原有的微信分享功能不能用了,在iphone手機上,顯示爲當前頁的連接,以前設置的圖標和標題等都沒有了。雖然在部分android手機上還能夠用,但最近微信升級後,分享功能也不正常了。正在苦於微信分享該怎麼解決時,微信於2015年1月10日即時發佈了開放JS-SDK,爲微信網站的開發提供了強大的js功能。這裏僅就分享功能的使用進行一些描述。javascript
微信JS-SDK demo http://demo.open.weixin.qq.com/jssdk/#menu-devicephp
微信JS-SDK 說明文檔:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.htmlcss
下面的代碼,服務器端使用的是php。html
登陸你的微信平臺,點擊「公衆號設置」。java
設置JS接口安全域名。這裏填寫的是一級域名,不帶www和http。最多能夠設置三個域名。設置完後點擊肯定。(多說一句,相比之前的分享沒有任何域名限制,這裏設置安全域名,目的是爲了當發現此公衆平臺發現誘導分享行爲時,能夠根據此域名追溯到全部分享出去的連接,以及經過這些連接增長的粉絲。這樣,微信就能夠緊緊控制了你的微信平臺,一旦發現違規,讓分享連接失效,刪除掉誘導行爲增長的粉絲,是瞬間就能夠完成的。所以,微信平臺的開發者,必定要合理來使用分享功能,不要因小失大。等到你的微信平臺被封,估計哭都來不及)android
在開發者中心中獲取你的AppID和AppSecret,接下來在獲取令牌時,須要這兩個信息。json
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×tamp=$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>