久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

半小時學會微信公眾平臺開發(fā)(完整版教程)

 一利陽光故事會 2018-02-26

使用Bmob云端代碼開發(fā)微信公眾平臺(教程)

         

目錄

一,、簡介...1

二、創(chuàng)建bmob應用...2

1.注冊bmob賬號...2

2. 創(chuàng)建應用...3

3. 數(shù)據(jù)的基本操作...4

4. 云端代碼...5

4.1云端代碼的基本知識...5

4.2 用云端代碼實現(xiàn)"helleworld".7

4.3 調(diào)用云端代碼的方式...10

4.4 云端代碼操作數(shù)據(jù)庫初步入門...12

三,、微信公眾平臺的開發(fā)...15

1. 創(chuàng)建云端代碼...15

2. 啟用微信公眾號的開發(fā)模式...16

3. 數(shù)據(jù)收發(fā)原理及消息數(shù)據(jù)格式...19

3.1變?yōu)殚_發(fā)模式時的消息校驗原理...20

3.2云端代碼收發(fā)微信公眾號后臺傳遞過來的消息的原理...21

四,、總結(jié)...23

 

 

一,、簡介

這篇微信公眾平臺開發(fā)教程將帶領你一步一步領略Bmob后端云開發(fā)的方便性,并讓你輕松學會用Bmob進行微信公眾號平臺開發(fā),。

 

使用bmob有什么好處,,下面一一為你道來:

?   不需要購買服務器,不需要懂linux,,不需要懂運維知識,,零成本地擁有屬于自己的后臺系統(tǒng)。

?   不在需要mysql,,輕松存儲和獲取數(shù)據(jù),,同時提供了一個方便的數(shù)據(jù)管理后臺。

?   提供靈活的“云端代碼”,,其融合了bmob的數(shù)據(jù)服務和大量的第三方服務,,讓你輕松應對復雜的業(yè)務邏輯。同時云端代碼能被第三方平臺調(diào)用,,再也不需要php,,java等復雜的web服務。

本教程將引導你完成如下任務:

?   創(chuàng)建bmob應用

?   使用bmob云端代碼實現(xiàn)微信公眾平臺的開發(fā)

 

二,、創(chuàng)建bmob應用

在這節(jié)中,,將會從基本的創(chuàng)建bmob賬號開始,到創(chuàng)建應用,,數(shù)據(jù)的基本操作,,到云端代碼的運行,使讀者對bmob的功能有初步的了解,。

 

在這個教程中,,用到了bmob的兩個功能:

?   數(shù)據(jù)存儲:把訂閱者發(fā)到微信公眾號的信息存儲起來。

?   云端代碼:微信后臺回調(diào)云端代碼后,,完成公眾號所需的業(yè)務邏輯:信息存儲,,把信息加工后返回給訂閱者的微信。

 

1.注冊bmob賬號

在網(wǎng)址欄輸入www.或者在百度輸入Bmob進行搜索,,打開Bmob官網(wǎng)后,,點擊右上角的“注冊”,在跳轉(zhuǎn)頁面填入你的姓名,、郵箱,、設置密碼,如下圖1所示:


圖1

注冊成功,,到注冊所填入的郵箱查看bmob發(fā)送的郵件,,點擊其中激活鏈接后,就能使用郵箱和密碼登錄bmob,。

 

2. 創(chuàng)建應用

登錄后,,點擊“我的控制臺”,,進入到了管理后臺,如下圖2所示:


圖2

在bmob中,,一個用戶可以創(chuàng)建多個應用,,每個應用擁有其所屬的專用數(shù)據(jù)庫,多個應用之間相互獨立,。

 

用戶需要創(chuàng)建一個應用,,先點擊管理后臺中的“創(chuàng)建應用”按鈕,如下圖3所示:


圖3

 

在創(chuàng)建應用的輸入框中輸入app的名稱,,點擊“創(chuàng)建應用”,,就能成功創(chuàng)建應用,如下圖4所示:


圖4

3. 數(shù)據(jù)的基本操作     

創(chuàng)建應用成功后,,開發(fā)者在管理后臺點擊剛才創(chuàng)建的應用,,進入到應用的后臺界面,其中最常用的是“數(shù)據(jù)瀏覽界面”,,在該界面提供了便利的圖形化操作,,讓開發(fā)者輕松地對該應用所屬的數(shù)據(jù)庫進行表的增刪,數(shù)據(jù)的增刪改查等操作,,如下圖5所示:

圖5

 

每個應用的數(shù)據(jù)庫都有一個默認的表"_User",其提供了一些常用的字段來記錄該應用的用戶信息。

開發(fā)者需要增加新的表來存儲信息時,,點擊“添加表”按鈕,,輸入表名,就能創(chuàng)建一張新表,,如下圖6所示:


圖6

 

在"添加新的表"界面中,選項“自定義”選項即可創(chuàng)建一張新的普通表,,另外兩個選項是較高級的功能,在本教程中暫時不需要用到,。

 

在這里,,創(chuàng)建了一張名為"message"的表,用于存儲訂閱者發(fā)送到公眾號后臺的信息,。

在表"message"的操作界面中可看到,,表"message"有4個默認的字段,其中3個最常用字段的含義如下:

?  objectId:該行的id,,objectId的作用和mysql中的經(jīng)常使用的id類似,,用于唯一標示一行。

?  createdAt:改行數(shù)據(jù)的創(chuàng)建時間,。

?  updatedAt:改行數(shù)據(jù)的最后修改時間,。

當操作一行數(shù)據(jù)的時候,以上的3個字段的值由bmob后臺自動管理,。另外這些字段的名字是保留的,,你不能自行設置它們,。

由于表"message"是需要把訂閱者發(fā)到微信公眾號的信息存儲起來,存儲信息的兩個屬性:誰發(fā)送這條信息,,信息的內(nèi)容,,所以添加下面所需的字段:

userId:訂閱者的id,String類型,。 content:發(fā)送的內(nèi)容,,String。

 

通過圖8的“添加一列”功能,,依次把userId和content這兩個字段添加到表"message"中,。


圖8

注意:在用云端代碼添加數(shù)據(jù)時,如果發(fā)現(xiàn)其所操作的表和所操作的列不存,,bmob后臺會自動創(chuàng)建,。這里為了演示bmob的數(shù)據(jù)瀏覽操作,所以才手動創(chuàng)建一次,。

 

4. 云端代碼

閱讀了上面的“數(shù)據(jù)的基本操作”的內(nèi)容后,,讀者可能有個疑問,怎么對表的數(shù)據(jù)進行增刪改查等操作呢,?除了可以在"數(shù)據(jù)瀏覽"界面可以進行操作外,,也可以通過云端代碼進行數(shù)據(jù)的增刪改查,開發(fā)者也可以通過云端代碼完成更加復雜的業(yè)務邏輯,。

 

4.1云端代碼的基本知識

對于一些復雜的應用,,您可能希望增加一些特有的業(yè)務邏輯,并能靈活掌控,,Bmob 云端代碼提供了這種靈活性,,可以讓您的代碼直接在 Bmob云上運行, 通過SDK(Android,iOS),,restful api或者任何http的方式調(diào)用,,即可獲取結(jié)果數(shù)據(jù)。

 

云端代碼的編碼采用nodejs語法,,簡單易用,。在云端代碼的編輯器中,系統(tǒng)默認生成了云端代碼的入口函數(shù)function onRequest(request, response, modules),,你可以根據(jù)自己的需求實現(xiàn)業(yè)務邏輯代碼,。

 

在云端代碼界面,創(chuàng)建一個名為"helloworld"的云端代碼,,如下圖9所示:


圖9

 

生成云端代碼后,,可看到云端代碼生成的入口方法,如下圖10所示:


圖10

開發(fā)者按照云端代碼的相關語法和提供的模塊編寫云端代碼,,就能實現(xiàn)各種業(yè)務邏輯,。

 

從云端代碼的入口方法function onRequest(request, response, modules)可知,,云端代碼包含三個模塊,分別是request模塊,、response模塊和modules模塊,。

 

4.1.1 request模塊

request模塊用于獲取傳入的參數(shù)。由于現(xiàn)在調(diào)用云端代碼有兩種方式(get和post),,所以獲取傳入的參數(shù)的方式需要使用不同的方法,。

 

當用get請求的方式傳入?yún)?shù),可用如下的方法獲取參數(shù)的值:

request.query.name  //獲取傳入?yún)?shù)name的值

 

當用post請求的方式傳入?yún)?shù),,可用如下的方法獲取參數(shù)的值:

request.body.name  //獲取傳入?yún)?shù)name的值

 

4.1.2  response模塊

response為云端代碼的信息回傳模塊,,該模塊包含了一個end方法,實現(xiàn)將云端的執(zhí)行結(jié)果(如查詢的數(shù)據(jù))返回給SDK或者RestApi等調(diào)用端:

response.end(string result)

 

4.1.3  modules模塊

modules是Bmob云端代碼提供給大家的各種對象處理的模塊,,包括數(shù)據(jù)庫對象(oData),、文件對象(oFile)、地理位置對象(oLocation),、關聯(lián)關系對象(oRelation),、原子操作對象(oAtom)、數(shù)據(jù)批量操作對象(oBatch),、數(shù)組對象(oArray),、消息推送對象(oPush)、云代碼對象(oFunctions),、郵件發(fā)送對象(oMail),、同步對象(oAsync)、HTTP對象(oHttp),、字符編碼轉(zhuǎn)換對象(oEncodeing)、事件對象(oEvent),、bql對象(oBql),、html元素解析對象(oHtmlparser)、加密對象(oCrypto),。云端代碼想要調(diào)用這些對象時,,只需要用如下的方法即可獲取:

//獲取數(shù)據(jù)庫對象
  var db = modules.oData;
  //下面進行其他操作

4.2 用云端代碼實現(xiàn)"helleworld"

下面用云端代碼輸出一個經(jīng)典的"helleworld"程序,,讓開發(fā)者對編寫云端代碼有個初步的了解,。

輸出"helleworld"的云端代碼如下:

function onRequest(request, response, modules) {
    response.end("this is hello world");  //返回字符串"this is hello world"
}

在"helloworld"的云端代碼編輯界面上輸入上面的代碼,,按下“保存”按鈕就能把編輯完畢的代碼保存在云端,,如下圖11所示:


圖11

 

怎么運行上面編輯完畢云端代碼呢,?bmob在每個云端代碼的編輯界面下方提供了一個方便的調(diào)試工具,如下圖12所示:


這個工具有下面的功能:

 

?   可選擇以http"post"或者"get"的方法運行云端代碼,。

?   選擇request的參數(shù)和對應值:可添加傳入云端代碼的request的參數(shù)和對應值,參數(shù)的數(shù)目可以通過“再添加一個”按鈕調(diào)整,。

需要運行名稱為"helloworld"的云端代碼,,在"helloworld"的云端代碼編輯界面下點擊“發(fā)送請求”按鈕,就能在調(diào)試工具上看到云端代碼返回的字符串“this is hello world”,,如下圖13所示:


圖13

 

 

整個云端代碼的執(zhí)行流程如圖13.1所示:


圖13.1

 

4.3 調(diào)用云端代碼的方式

除了使用bmob提供的云端代碼調(diào)式工具外,,bmob允許開發(fā)者以http的方式直接調(diào)用云端代碼,。

 

4.3.1 獲取Secret Key

用戶需要以http的方式運行云端代碼,需要先確定應用的Secret Key,。調(diào)用云端代碼時,通過Secret Key標識一個應用,,獲取Secret Key的路徑:管理后臺->應用密鑰->Secret Key, 如下圖14所示:


圖14

注意:請妥善保管Secret Key,避免Secret Key的泄露?。?!

 

4.3.2以Get的方式調(diào)用云端代碼

下面展示了以Get的方式調(diào)用云端代碼,,在瀏覽器中輸入下面的url:

http://cloud./a12af19a1b8bf434/helloworld

其中:

?   a12af19a1b8bf434:應用的Secret Key。

?   helloworld:云端代碼的名稱

 

看到云端代碼的返回結(jié)果如下圖15所示:


圖15

4.3.3 以Post的方式調(diào)用云端代碼

下面通過curl工具展示了以Post的方式調(diào)用云端代碼:

curl -X POST     http://cloud./a12af19a1b8bf434/helloworld

其中:

 

?   a12af19a1b8bf434:應用的Secret Key,。

?   helloworld:云端代碼的名稱

4.4 云端代碼操作數(shù)據(jù)庫初步入門

bmob提供了數(shù)據(jù)庫對象(oData)用于操作數(shù)據(jù)。

 

用云端代碼往數(shù)據(jù)表“message”插入一條數(shù)據(jù),,可用如下的代碼

function onRequest(request, response, modules) {
    //獲取數(shù)據(jù)庫對象
    var db = modules.oData;
    db.insert({
      "table":"message",             //表名
      "data":{"userId":"dsfd2324","content":"插入的第一條信息"}            //需要插入的數(shù)據(jù),,格式為JSON
    },function(err,data){         //回調(diào)函數(shù)
        response.end("success");  //運行完畢后返回“success”
    });
}

點擊保存后在云端代碼調(diào)試區(qū)按“發(fā)送請求”,返回“success”的值,,如下圖16所示:


圖16

在管理后臺->數(shù)據(jù)瀏覽->應用表“message”下查看通過云端代碼新增的數(shù)據(jù),,如下圖17所示:


圖17

 

用云端代碼查詢數(shù)據(jù)表“message”的數(shù)據(jù),可用如下的代碼:

function onRequest(request, response, modules) {
    //獲取數(shù)據(jù)庫對象
    var db = modules.oData;
    db.find({
      "table":"message"             //表名
    },function(err,data){         //回調(diào)函數(shù)
        response.end(data);       //data為返回的數(shù)據(jù),格式為json
    });
}

 

點擊保存后在云端代碼調(diào)試區(qū)按“發(fā)送請求”,,返回“success”的值,,如下圖18所示:


圖18

 

需要了解更多云端代碼的操作,,可閱讀:

http://docs./cloudcode/developdoc/index.html?menukey=develop_doc&key=develop_cloudcode

 

在編寫云端代碼時有個注意事項:云端代碼是使用異步編程,。也就是說,當遇到文件讀寫請求,,網(wǎng)絡請求等IO操作時,,代碼不等待IO操作返回結(jié)果就執(zhí)行后面的語句,當接收到IO操作的返回結(jié)果后才調(diào)用回調(diào)函數(shù)。

當使用php,,java等非異步編程語言時,,如果需要插入數(shù)據(jù)后再查找數(shù)據(jù),,可用類似下面的代碼:

 db->insert(xxxxx);
    db->find(xxxxx);

在同步型的編程語言中,,find和insert都是數(shù)據(jù)庫的操作,,有文件讀寫的IO操作,在db->find執(zhí)行前,,能確保db->insert已經(jīng)執(zhí)行完畢了,。


在異步編程中,用類似下面的代碼才能保證執(zhí)行完db.insert后才執(zhí)行:

 

 db.insert({xxx},function(xxx){
        db.find({xxx},function(xxx){xxxx});
    });

只有通過在db.insert的回調(diào)函數(shù)中執(zhí)行db.find,,才能保證執(zhí)行db.find前db.insert的數(shù)據(jù)庫操作已經(jīng)完成,。

 

舉個生活中的例子說明異步編程。在飯館里,,服務員接待客人一般是這樣的:

”服務員指引客人就座,,把菜單遞給客人,在客人瀏覽菜單時服務員在旁邊一直等待,,當客戶點菜后,,服務員把訂單交給廚房后繼續(xù)干別的事情?!?/span>

采用異步模式的服務員可以這樣接待客人:

”服務員指引客人就座,,把菜單遞給客人,在客人瀏覽菜單時服務員就去干別的事情,。當客戶決定點菜后,,客人把服務員招來,服務員把客人下的訂單交給廚房后繼續(xù)干別的事情,?!?/span>

在服務員接待客人的行為中,通過比較普通的做法和異步的做法,,能發(fā)現(xiàn)采用異步的方法后服務員的效率大大提高,,云端代碼使用異步也是基于同樣的理由,當云端代碼在等待IO操作(文件讀寫請求,,網(wǎng)絡請求)的結(jié)果時是一直空閑,,如果不等待IO的結(jié)果繼續(xù)執(zhí)行下面的語句,能大大提高系統(tǒng)的效率,。

 

在云端代碼異步編程中“function(xxx){xxxx}”部分稱為回調(diào)函數(shù),,云端代碼會把IO操作的返回結(jié)果封裝后傳入到function函數(shù)執(zhí)行里面的邏輯。

db.insert({xxx},function(xxx){xxxx});

三,、微信公眾平臺的開發(fā)

在本節(jié)中,,通過bmob云端代碼開發(fā)微信公眾平臺,實現(xiàn)一個反饋意見收集的功能: 1.把訂閱者發(fā)送到公眾號后臺的反饋意見存儲在上一節(jié)在bmob中創(chuàng)建的表“message”中,。 2.訂閱者提交反饋意見后,,公眾號自動給訂閱者發(fā)送消息,,表示消息已收到。

1. 創(chuàng)建云端代碼

創(chuàng)建一個名為"feedback"的云端代碼用于實現(xiàn)上面的功能,,代碼如下:

function onRequest(request, response, modules) {
    var token = "weixin";         //這里的值必須與在微信公眾號后臺填入的token值一致
    var crypto = modules.oCrypto; //使用加解密模塊
    var httptype = modules.oHttptype; //獲取調(diào)用云端代碼的是post或者get方式
    var xml2js = modules.oXml2js; //實現(xiàn)xml和js格式之間的相互轉(zhuǎn)換
    var db = modules.oData;         //數(shù)據(jù)庫對象
    if ("get" == httptype) {
         //是get方法,則是微信驗證回調(diào)的url是否有效
          var oriStr = [token, request.query.timestamp, request.query.nonce].sort().join('')
          var code = crypto.createHash('sha1').update(oriStr).digest('hex');
          if (code == request.query.signature) { //驗證通過,,輸出
              response.end(request.query.echostr);
          } else {
              response.end("Unauthorized");
          }
    } else {
           //是post,接收定閱者發(fā)送過來的消息后返回,把反饋意見存儲表“message”中,。
            db.insert({
              "table":"message",             //表名
              "data":{"userId":request.body.xml.FromUserName,"content":request.body.xml.Content}           
            },function(err,data){                        
              //構(gòu)造公眾號后臺所需要的xml格式,,并返回給公眾號后臺  
               var result = {
                    xml: {
                      ToUserName: request.body.xml.FromUserName,
                      FromUserName: request.body.xml.ToUserName ,
                      CreateTime: new Date().getTime(),
                      MsgType: 'text',
                      Content: '你好,你發(fā)送的反饋內(nèi)容「' + request.body.xml.Content + '」已收到,。'
                    }
                }
                var builder = new xml2js.Builder();
                var xml = builder.buildObject(result); //利用模塊xml2js,,把json對象轉(zhuǎn)換為一個xml文本
                response.set('Content-Type', 'text/xml'); //設置返回的http header
                response.end(xml);
            });



    }
}

這個云代碼的內(nèi)容暫時看不懂沒關系,下面會逐漸解釋其中的含義,。

 

2. 啟用微信公眾號的開發(fā)模式

只有啟用微信公眾號的開發(fā)模式后,,才能把訂閱者發(fā)送到微信公眾號后臺的消息發(fā)送到bmob云端代碼中進行處理。

 

微信公眾平臺地址:https://mp.weixin.qq.com

 

登錄微信公眾平臺后臺,,在左側(cè)列表中最下方,,找到“開發(fā)者中心”,點擊進入,,如圖19所示:


圖19

進入服務器配置填寫框,,如圖20所示:


圖20

 

 

點擊“修改配置”按鈕,如圖21所示:


圖21

此處的URL(http://cloud./a12af19a1b8bf434/feedback)為上節(jié)中生成的云端代碼“feedback”的調(diào)用,,按照云端代碼的調(diào)用規(guī)格,,a12af19a1b8bf434為該應用的Secret Key,標明調(diào)用的是哪個應用,,feedback為云端代碼的名稱,。Token定義為weixin。EncodingAESKey則不用填,,點擊“隨機生成”讓自動生成一個,,消息加解密方式選擇“明文模式”,然后點擊“提交”按鈕,,如圖22所示:


圖22

 

點擊“啟用”,,如圖23所示:


圖23

 

在彈出框中點擊確定,如圖24所示:


圖24

成功啟用后如圖25所示:


圖25

 

恭喜,,你成功啟用開發(fā)模式,。


 

用戶往該公眾號發(fā)送消息后,用戶收到的反饋內(nèi)容如圖27所示:


圖27

 

查看應用的后臺,,可看到接收的消息已存儲在表message中,,如圖28所示:


圖28

 

3. 數(shù)據(jù)收發(fā)原理及消息數(shù)據(jù)格式

云端代碼開發(fā)微信公眾號有兩個重要原理一定要弄明白:

 

?   變?yōu)殚_發(fā)模式時,微信公眾號后臺往配置的url發(fā)送校驗請求,,這個過程云端代碼校驗信息的原理,。

?   云端代碼收發(fā)微信公眾號后臺傳遞過來的消息的原理,。

 

3.1變?yōu)殚_發(fā)模式時的消息校驗原理

在開發(fā)者首次提交驗證申請時,微信公眾號后臺將發(fā)送GET請求到填寫的URL上,,并且?guī)纤膫€參數(shù)(signature,、timestamp、nonce,、echostr),開發(fā)者通過對簽名(signature)的效驗來判斷此條消息的真實性,。

 

這4個參數(shù)的含義如下:

 

?   signature:微信加密簽名,,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù),。

?   timestamp:時間戳,。

?   nonce:隨機數(shù)

?   echostr:隨機字符串

 

此后,每次開發(fā)者接收用戶消息的時候,,微信公眾號后臺也都會帶上前面三個參數(shù)(signature,、timestamp、nonce)訪問開發(fā)者設置的URL,,開發(fā)者依然通過對簽名的效驗判斷此條消息的真實性,。效驗方式與首次提交驗證申請一致。

 

開發(fā)者通過檢驗signature對請求進行校驗(下面有校驗方式),。若確認此次GET請求來自微信公眾號后臺,,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,,成為開發(fā)者成功,,否則接入失敗。

 

消息校驗流程如下:

 

a.將token,、timestamp,、nonce三個參數(shù)進行字典序排序。

b.將三個參數(shù)字符串拼接成一個字符串進行sha1加密,。

c.開發(fā)者獲得加密后的字符串可與signature對比,,標識該請求來源于微信。

 

整個流程如圖29所示:


圖29

 

使用的云端代碼如下:

//是get方法,則是微信驗證回調(diào)的url是否有效
          var oriStr = [token, request.query.timestamp, request.query.nonce].sort().join('')
          var code = crypto.createHash('sha1').update(oriStr).digest('hex');
          if (code == request.query.signature) { //驗證通過,,輸出
              response.end(request.query.echostr);
          } else {
              response.end("Unauthorized");
          }

其中token的值是在微信公眾號后臺填入的token值:“weixin”,。

 

在這個校驗流程的云端代碼中,使用oCrypto這個云端代碼的加密對象模塊,,提供md5和sha1兩種加密算法,。通過這個模塊,按照微信校驗的流程完成校驗,。oCrypto更多的功能詳細參考:https://www./package/crypto

 

另外,,云端代碼使用了oHttptype模塊獲取當前的http調(diào)用方式,。因為微信公眾平臺調(diào)用云端代碼有兩種方式:

?   get方式,用于檢驗,。

?   post方式,,用于轉(zhuǎn)發(fā)訂閱者往公眾平臺發(fā)送的消息。

通過oHttptype模塊得知是用采用get方式調(diào)用云端代碼,,運行校驗的代碼并返回echostr參數(shù),。

 

3.2云端代碼收發(fā)微信公眾號后臺傳遞過來的消息的原理

在上一節(jié)的演示中,訂閱者往該公眾號發(fā)送消息后,,返回已收到反饋內(nèi)容的消息,。

 

這一原理的消息流程如圖30所示:


圖30

 

 

云端代碼內(nèi)部通過下面的代碼處理用戶發(fā)送的消息:

//是post,接收定閱者發(fā)送過來的消息后返回,把反饋意見存儲表“message”中,。
            db.insert({
              "table":"message",             //表名
              "data":{"userId":request.body.xml.FromUserName,"content":request.body.xml.Content}           
            },function(err,data){         
              //構(gòu)造公眾號后臺所需要的xml格式,,并返回給公眾號后臺  
               var result = {
                    xml: {
                      ToUserName: request.body.xml.FromUserName,
                      FromUserName: request.body.xml.ToUserName ,
                      CreateTime: new Date().getTime(),
                      MsgType: 'text',
                      Content: '你好,你發(fā)送的反饋內(nèi)容「' + request.body.xml.Content + '」已收到,。'
                    }
                }
                var builder = new xml2js.Builder();
                var xml = builder.buildObject(result); //利用模塊xml2js,,把json對象轉(zhuǎn)換為一個xml文本
                response.set('Content-Type', 'text/xml'); //設置返回的http header
                response.end(xml);
            });

從上圖可以看出,用戶在發(fā)送一個文本后,,微信公眾號后臺將組裝一個xml消息發(fā)送給云端代碼服務器,。當云端代碼接收到http頭部Content-Type為text/xml的請求后,云端代碼自動把xml消息轉(zhuǎn)換為一個對象放在request.body.xml中,,通過獲取request.body.xml對應的屬性就能獲取xml節(jié)點的值,。

 

云端代碼解析xml對象,根據(jù)節(jié)點信息,,把發(fā)送者(request.body.xml.FromUserName)和消息內(nèi)容(request.body.xml.Content)存儲在表“message”后,,然后通過一定的規(guī)則組裝成一個xml文本回復給微信公眾號后臺,微信公眾號后臺再回復給用戶,。在這個收發(fā)過程中,,發(fā)送方和接收方進行了調(diào)換(ToUserName和FromUserName值互換),收發(fā)都是以xml格式在后臺進行傳輸?shù)?。所以掌握各種消息類型的接收回復是進行微信公眾平臺開發(fā)的基礎,!

 

最常見的消息類型為文本的xml格式如下:

<xml>
<ToUserName><![CDATA[gh_b36303ca8941]]></ToUserName>
<FromUserName><![CDATA[oqwUds6-SG7L8t6ZBDexZvaRWnXM]]></FromUserName>
<CreateTime>1444464955</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[這個公眾號不錯]]></Content>
<MsgId>6203929742163889773</MsgId>
</xml>

 

 

XML格式講解:

 

?   ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號

?   FromUserName 消息發(fā)送方微信號

?   CreateTime 消息創(chuàng)建時間

?   MsgType 消息類型,;文本消息為text

?   Content 消息內(nèi)容

?   MsgId 消息ID號

各種類型的消息詳解,,請查看微信開發(fā)文檔:

http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html

 

四、總結(jié)

通過本教程,,你得到了以下收獲:

 

了解bmob應用和云端代碼的功能,。

在不需要搭建服務器,不需要懂得基本的運維知識下,,使用bmob云端代碼在30分鐘內(nèi)實現(xiàn)微信公眾平臺的開發(fā),,完了消息存儲和消息自動回復這兩個功能,。

閱讀本教程后,想了解云后端服務bmob可以實現(xiàn)哪些更酷的功能嗎,?點擊http://www.,,立刻進入bmob了解更多。

 

 

 

 

 

 


    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多