この記事では、NodeJs を使用して WeChat パブリック アカウントの WeChat イベント インタラクションの例を開発することに関する関連情報を主に紹介します。必要な友人はそれを參照してください。
WeChat パブリック アカウントには、開発者モードをオンにすると、すべてのルールが適用されます。他の通常の機能が必要です。呼び出しは インターフェース を通じて完了します。たとえば、カスタム メニュー 関數(shù)は、投稿リクエスト を送信して生成する必要があります。この章では、フォローからフォロー解除までのプロセス全體を通じて、nodejs が WeChat とどのように対話するかについて説明します。これらの機能への入り口は、テスト公式アカウントに入力した URL (以下では /login/wechat に置き換えます) です。
イベントインタラクション
QRコードをスキャンしてWeChat公式アカウントをフォローすると、WeChatはインターフェース/ログイン/wechatを呼び出し、xmlメッセージを添付します。最初にいくつかの署名を取得し、暗號化する必要があります。入力した TOKEN と一致するかどうかを確認します。一致する場合は、XML を解析します。ノードが XML を解析するときは、最初にモジュールを參照する必要があります。したがって、まず XML 解析モジュール
//xml解析模塊 var XMLJS = require('xml2js'); //解析,將xml解析為json var parser = new XMLJS.Parser(); //重組,將json重組為xml var builder = new XMLJS.Builder();
を?qū)毪筏?、req の監(jiān)視データを通じて WeChat によって送信された XML パッケージを取得します。以下は、新しいユーザーが公式アカウントをフォローした後に WeChat によってバックエンド インターフェース (/yourapi) に送信される XML パッケージ データです。解析後の構(gòu)造は次のとおりです。
tousername: Recipient [ここに公開 WeChat ID]
fromusername: 送信者 [ここにユーザー openid]
createTime: 送信時刻
msgtype: メッセージ タイプ [event (応答イベント)、text (プッシュ メッセージ)、image (プッシュ グラフィック メッセージ) 、など]
event: メッセージ名 [ここがフォローです]
eventkey: Web ページを設(shè)定するときにカスタマイズできるカスタマイズされたキーについては、記事の後半で説明します
以上です。ユーザーが注意を払うと、WeChat はデータ パケットをインターフェースに送信します。上記で役立つのは、フォロワーの openid である fromusername です。フォローするときにユーザーの openid を取得すると、WeChat (https://api.weixin.qq.com/) が提供する特定のインターフェイスを使用できます。 cgi-bin/ user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN) ユーザーのアバター、性別、ニックネームなどの情報を取得して、アプリの信頼できるデータベースを構(gòu)築します。
コード実裝
//微信事件推送的入口 app.post('/yourapi', function(req, res, next) { //獲取參數(shù) var query = req.query; //簽名 var signature = query.signature; //輸出的字符,你填寫的TOKEN var echostr = query.echostr; //時間戳 var timestamp = query['timestamp']; //隨機字符串 var nonce = query.nonce; var oriArray = new Array(); oriArray[] = nonce; oriArray[] = timestamp; oriArray[] = appConfig.token; //排序參數(shù) oriArray.sort(); var original = oriArray[]+oriArray[]+oriArray[]; //加密 var scyptoString = sha(original); //判斷是否與你填寫TOKEN相等 if (signature == scyptoString) { //獲取xml數(shù)據(jù) req.on("data", function(data) { //將xml解析 parser.parseString(data.toString(), function(err, result) { var body = result.xml; var messageType = body.MsgType[]; //用戶點擊菜單響應(yīng)事件 if(messageType === 'event') { var eventName = body.Event[]; (EventFunction[eventName]||function(){})(body, req, res); //自動回復(fù)消息 }else if(messageType === 'text') { EventFunction.responseNews(body, res); //第一次填寫URL時確認接口是否有效 }else { res.send(echostr); } }); }); } else { //認證失敗,非法操作 res.send("Bad Token!"); } }); //微信客戶端各類回調(diào)用接口 var EventFunction = { //關(guān)注 subscribe: function(result, req, res) { //存入openid 通過微信的接口獲取用戶的信息同時存入數(shù)據(jù)庫。 }, //注銷 unsubscribe: function(openid, req, res) { //刪除對應(yīng)id }, //打開某個網(wǎng)頁 VIEW: function() { //根據(jù)需求,處理不同的業(yè)務(wù) }, //自動回復(fù) responseNews: function(body, res) { //組裝微信需要的json var xml = {xml: { ToUserName: body.FromUserName, FromUserName: body.ToUserName, CreateTime: + new Date(), MsgType: 'text', Content: '編輯@+您想說的話,我們可以收到' }}; var reciviMessage = body.Content[] if(/^\@.*/.test(reciviMessage)) { xml.xml.Content = '已經(jīng)收到您的建議,會及時處理!' }<br>//將json轉(zhuǎn)為xml xml = builder.buildObject(xml);<br>//發(fā)送給微信 res.send(xml); } }
ここでは、JSデザインパターンの戦略パターンを使用して、openidパラメータを使用してリクエストを送信することで、ユーザーが WeChat ID をフォローすると、ユーザーの情報のいくつかがデータベースに保存され、セッションが確立されます。これにより、ユーザーが次回 Web ページを開くときに、再度認証する必要がなく、openid を比較してデータベースにクエリを?qū)g行するだけで済みます。
以上がNodeJs が WeChat パブリック アカウント WeChat イベント インタラクションのサンプル コードを開発の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)