因爲我的帳號不能微信認證,沒法使用分享接口,因此只能用測試號了php
1 申請微信測試號html
申請地址,微信公衆平臺開發者文檔:http://mp.weixin.qq.com/wiki/home/index.htmlweb
點擊「接口測試號申請」,後續操做請根據微信提示來掃碼,就ok了。api
2 申請成功安全
後面說怎麼設置這些。服務器
3 下載微信的測試代碼微信
微信網頁開發-》微信JS-SDKapp
拉到最下面,就能夠看見下載連接了微信公衆平臺
4 將下載的代碼放到本身的服務器上curl
沒有的本身去申請個免費的新浪雲,或者其餘的
5 接口配置信息
URL設置爲本身服務器地址上wx_sample的地址。
Token隨意設置, 和wx_sample裏的define("TOKEN", "weixin")一致就行。
wx_sample沒有在微信下載的源碼裏,代碼以下:
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
6 JS安全域名
就是本身服務器地址
7 掃碼關注,只有關注的微信號才能測試
8 測試號就設置完成了,如今修改sample.php文件
首先appid和appsecret要和測試號上的一致
$jssdk = new JSSDK("wx4a14bf95e973b059", "af99ce68694f39e2712e7cf7c22fe224");
在wx.config中,配置要使用的接口
jsApiList: [ // 全部要調用的 API 都要加到這個列表中 'onMenuShareAppMessage','onMenuShareTimeline' ]
最後在wx.ready中寫具體接口,代碼以下:
<?php require_once "jssdk.php"; $jssdk = new JSSDK("wx4a14bf95e973b059", "af99ce68694f39e2712e7cf7c22fe224"); $signPackage = $jssdk->GetSignPackage(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 微信分享測試 </body> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> /* * 注意: * 1. 全部的JS接口只能在公衆號綁定的域名下調用,公衆號開發者須要先登陸微信公衆平臺進入「公衆號設置」的「功能設置」裏填寫「JS接口安全域名」。 * 2. 若是發如今 Android 不能分享自定義內容,請到官網下載最新的包覆蓋安裝,Android 自定義分享接口需升級至 6.0.2.58 版本及以上。 * 3. 常見問題及完整 JS-SDK 文檔地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html * * 開發中遇到問題詳見文檔「附錄5-常見錯誤及解決辦法」解決,如仍未能解決可經過如下渠道反饋: * 郵箱地址:weixin-open@qq.com * 郵件主題:【微信JS-SDK反饋】具體問題 * 郵件內容說明:用簡明的語言描述問題所在,並交代清楚遇到該問題的場景,可附上截屏圖片,微信團隊會盡快處理你的反饋。 */ wx.config({ debug: true, appId: '<?php echo $signPackage["appId"];?>', timestamp: <?php echo $signPackage["timestamp"];?>, nonceStr: '<?php echo $signPackage["nonceStr"];?>', signature: '<?php echo $signPackage["signature"];?>', jsApiList: [ // 全部要調用的 API 都要加到這個列表中 'onMenuShareAppMessage','onMenuShareTimeline' ] }); wx.ready(function () { //分享朋友圈 wx.onMenuShareTimeline({ title: '分享標題', // 分享標題 link: 'http://www.baidu.com', // 分享連接 imgUrl: '', // 分享圖標 success: function () { // 用戶確認分享後執行的回調函數 }, cancel: function () { // 用戶取消分享後執行的回調函數 } }); //分享給朋友 wx.onMenuShareAppMessage({ title: '微信分享標題', // 分享標題 desc: '微信分享描述', // 分享描述 link: 'http://www.baidu.com', // 分享連接 imgUrl: '', // 分享圖標 type: '', // 分享類型,music、video或link,不填默認爲link dataUrl: '', // 若是type是music或video,則要提供數據連接,默認爲空 success: function () { // 用戶確認分享後執行的回調函數 }, cancel: function () { // 用戶取消分享後執行的回調函數 } }); }); </script> </html>
9 在微信上打開,並分享
微信上打開網址 120.24.188.118/web/sample/sample.php
而後分享,就能夠看到分享配置裏的標題、圖片等分享內容
10 問題
遇到invaild signature錯誤。找了半天,發現jssdk.php中獲取的token爲空。
覺得是php的curl沒開,後來發現php.ini已經開了。而後百度到curl版本問題,將httpGet中這兩行設置爲false就好了。
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);