'微信公眾平臺'入門

上周的主要任務(wù)是做一個走微信公眾號的h5分享頁面,對于從來沒有接觸過微信程序的我,有點懵,還有h5頁面本來就不咋會寫,而且基本上沒人能給啥指導(dǎo),所以基本是自己一步步摸索。記錄一下這個苦逼的過程。
1: 既然說是要走微信公眾號,所以第一步,登錄微信公眾號后臺,不同功能的公眾號,所能調(diào)用的微信接口是不一樣的,可以登錄在接口權(quán)限的地方看一下自己具體有哪些權(quán)限。若是沒有公眾號,只是想自己練習(xí)如何做,在微信公眾平臺的文檔中有注冊測試帳號,附上鏈接:微信公眾平臺接口測試帳號申請
2: 拿到了id和secret,那如何進(jìn)行第一步的連接呢?首先url是外網(wǎng)地址,最好是將自己的程序放在服務(wù)器上,而且是默認(rèn)端口是80端口。若是沒有自己的服務(wù)器,可以將自己的服務(wù)器借助于花生殼、ngrok等工具將內(nèi)網(wǎng)的地址影射到外網(wǎng)(這里我用過ngrok,弄了挺長時間,但當(dāng)訪問的時候總是顯示不出來,后來就直接放棄了,部署在服務(wù)器上了)。
另外一個就是對于token,token是你自己定義的,剛開始并不知道自己定義是啥意思,其實這一步的驗證和后面的你要想是隔離開的,先進(jìn)行驗證。
驗證代碼:

 <?php
  /**
    * wechat php test
  */

//define your token
define("TOKEN", "weixinxijiji");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
public function valid()
{
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
        echo $echoStr;
        exit;
    }
}

public function responseMsg()
{
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

    //extract post data
    if (!empty($postStr)){
            /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
               the best way is to check the validity of xml by yourself */
            libxml_disable_entity_loader(true);
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $keyword = trim($postObj->Content);
            $time = time();
            $textTpl = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        <FuncFlag>0</FuncFlag>
                        </xml>";             
            if(!empty( $keyword ))
            {
                $msgType = "text";
                $contentStr = "Welcome to wechat world!";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }else{
                echo "Input something...";
            }

    }else {
        echo "";
        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;
    }
}
}

?>
測試帳號進(jìn)行檢測
申請的公眾號設(shè)置檢測

3: 如何檢測我有沒有成功呢,需要借助微信web開發(fā)者工具。微信web開發(fā)者工具下載地址
使用方法:要在微信公眾號平臺中,開發(fā)->開發(fā)者工具->web開發(fā)者工具 上面綁定需要開發(fā)的微信帳號。這樣之后 就有權(quán)限進(jìn)行開發(fā)調(diào)試。

4: 如何進(jìn)行微信網(wǎng)頁開發(fā),參照微信網(wǎng)頁開發(fā)文檔,因為服務(wù)器端的是php環(huán)境,所以使用的是php寫的,主要分為,獲取access_token,獲取ticket,進(jìn)行校驗等。

<?php
$appid = "xxxx";
$secret = "xxxxxxxxxx";
$token = read('access_token', 3600);
$ticket = read('jsapi_ticket', 3600);
if (!$token || strlen($token) < 6) {
    $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret);
    $res = json_decode($res, true);
    $token = $res['access_token'];
    write('access_token', $token, 3600);
}
if (!$ticket || strlen($ticket) < 6) {
    $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$token.'&type=jsapi');
    $res = json_decode($res, true);
    $ticket = $res['ticket'];
    write('jsapi_ticket', $ticket, 3600);
}

$timestamp = time();
$nonceStr = getRandChar(15);
//url為當(dāng)前頁面的url
$url = 'http://'.$_SERVER['HTTP_HOST'].'/act/icevelive2/third/';
$testurl = $_SERVER['QUERY_STRING'];
$first = strpos($testurl, '?');
$urltest = substr($testurl, 0, $first+0);
$url = $url.$urltest;
$str = "jsapi_ticket=".$ticket."&noncestr=".$nonceStr."&timestamp=".$timestamp."&url=".$url;
$signature = sha1($str);
echo $timestamp.",".$nonceStr.",".$signature;

function read($file, $expires){
    if(file_exists($file)) {
        $time = filemtime($file);
        if(time() - $time > $expires) {
            return null;
        }else {
            return file_get_contents($file);
        }
    }
    return null;
}

function write($file, $value){
    @file_put_contents($file, $value);
}

function getRandChar($length){
    $str = null;
    $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($strPol)-1;

    for($i=0;$i<$length;$i++){
        $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max兩個數(shù)之間的一個隨機整數(shù)
    }

    return $str;
}

若是成功了,就可以進(jìn)行調(diào)用各種接口了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內(nèi)容