краткое введение
В этой статье кратко рассказывается, как использоватьnode.js
Создайте публичный аккаунт WeChat. Основное содержание включает в себя конфигурацию общедоступной платформы WeChat,signature
проверка и сnode.js
Для обработки инициированного пользователем поведения.
Готов к работе
Его необходимо установить перед разработкойnode.js
, потому что я основан наexpress
Фреймворк был разработан, поэтому я его установилexpress
(Фреймворк выбирается в соответствии с вашими потребностями), вам нужна публичная учетная запись WeChat, будь то учетная запись подписки или учетная запись службы (если нет, вы можете использовать тестовую публичную учетную запись), и сервер, к которому можно получить доступ сеть общего пользования. Это базовая конфигурация, и она будет добавлена позже по мере необходимости. Далее поговорим о том, как развиваться.
1. Конфигурация общедоступной платформы WeChat
Войдите на публичную платформу WeChat, если официальной учетной записи нет, зарегистрируйте тестовую официальную учетную запись (не нажимай сюда, сканируйте код, чтобы войти в систему). Вход на публичную платформу вы увидите следующий интерфейс:
базовая конфигурация
При входе на домашнюю страницу общедоступной платформы сначала будет информация о тестовом номере.appID,appsecret
;а такжеappID
а такжеappsecret
Его нельзя изменить (зарегистрированный публичный аккаунт самостоятельно)appsecret
Его можно сбросить, операция очень простая, здесь не объясняется);
Конфигурация интерфейса
Модуль информации о конфигурации интерфейса в первый раз пуст, и его необходимо настроить самостоятельно, здесь вам нужно настроить два параметра, один — URL, а другой — адрес.Token
;Если вы не знаете, как его настроить, вы можете узнать подробности в WeChat.wiki
Документация, так же расскажу о некоторых ямах, с которыми я столкнулся при его настройке!
Во-первых, когда вы нажмете «Изменить», он станет следующим интерфейсом:
будь осторожен:
-
Описание параметра URL:URL-адрес заполняется адресом интерфейса, развернутого в общедоступной сети (Это реальный интерфейс, который был развернут и может быть запрошен), интерфейс должен начинаться с
http://
илиhttps:
// запуск, только поддержка80
порт и443
порт.
-
Параметры токена:
token
Заполните логотип, определенный вами. Обратите внимание, что после его настройки логотип вышеurl
установить в интерфейсеtoken
Это должно соответствовать этому, иначе настройка не будет успешной.
Конкретное руководство по настройке нажмите здесь
Когда вы нажимаете отправить,get
запрос к тому, который вы только что заполнилиURL
Адрес, и это займет 4 параметра, а именно:signature,timestamp,echostr,nonce
, а затем проверьте, передается ли конфигурация на стороне сервера;
Если конфигурация прошла успешно, появится сообщение об успешном завершении, как показано ниже:
На этом настройка интерфейса завершена.
Имя домена безопасности интерфейса JS
Эта конфигурация в основном предназначена для настройкиjs-sdk
Если интерфейс настроен, разработчик может вызывать WECHAT только при этом доменном имени.js
Интерфейсы (такие как вызов QR-кодов, загрузка файлов предварительного просмотра и т. д.) в документации также написаны более подробно, поэтому я не буду здесь слишком много объяснять.
Официальная документация WeChat JS-SDK нажмите здесь
На данный момент конфигурация общедоступной платформы WeChat почти такая же, и тогда вы можете начать разработку сервера.
Во-вторых, конфигурация разработки узла сервера
Не забудьте заполнить конфигурацию общедоступной платформы WeChat.url
а такжеtoken
Стоит ли оно того? Используется здесь, посмотрите на следующий код:
const bodyParser = require('body-parser'); //处理请求参数
server.get("/", function (req, res) {
var token = "xxxx";
var signature = req.query.signature;
var timestamp = req.query.timestamp;
var echostr = req.query.echostr;
var nonce = req.query.nonce;
var oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = token;
oriArray.sort();
var original = oriArray.join('');
var sha = sha1(original)
if (signature === sha) {
//验证成功
res.send(echostr)
} else {
//验证失败
res.send({ "message": "error" })
}
});
Помните приведенное выше утверждение о том, что при нажатии кнопки «Отправить» будет отправлен запрос на получение? Сказал, что принесетsignature,timestamp,echostr,nonce
четыре параметра. Именно в этом интерфейсе можно судить об успешной настройке и посмотреть, что делает запрос на получение.
- определить
token
Значения, требуемые и настраиваемые публичной платформойtoken
быть последовательным. - пройти через
req.query.xxx
Получите 4 параметра, переданных запросом. - Пучок
nonce,timestamp,token
добавить в массив и использоватьsort()
sort, затем поместите этот массив сjoin("")
объединены в строку. - использовать
sha1
Шифрование генерирует ключ, и выносится окончательное решениеsha1
Сгенерированоsignature
и параметры приведеныsignature
Если они непротиворечивы, конфигурация завершается успешно, если они непротиворечивы, и завершается ошибкой, если они противоречат друг другу.
За подробностями обращайтесь к официальному документу (пример документа — php), адрес документакликните сюда;
На этом настройка общедоступной учетной записи и настройка сервера узлов для разработки WeChat завершена, и теперь вы можете начать счастливую разработку!
3. Обработка информации о пользователях
Сначала задайте вопрос, когда пользователи подписываются на официальный аккаунт и отправляют сообщения, где разработчики могут получить эти сообщения и ответить соответствующим образом?
Ответ настроен на общедоступной платформе WeChatURL
изpost
Запрос, если запрос на получение URL-адреса предназначен для настройки, то почтовый запрос предназначен для обработки информации о пользователе.
Посмотрите на следующий фрагмент кода
var parseString = require('xml2js').parseString;
server.post("/", function (req, res) {
try {
var buffer = [];
//监听 data 事件 用于接收数据
req.on('data', function (data) {
buffer.push(data);
});
//监听 end 事件 用于处理接收完成的数据
req.on('end', function () {
//输出接收完成的数据
parseString(Buffer.concat(buffer).toString('utf-8'), { explicitArray: false }, function (err, result) {
if (err) {
//打印错误信息
console.log(err);
} else {
//打印解析结果
result = result.xml;
var toUser = result.ToUserName; //接收方微信
var fromUser = result.FromUserName;//发送仿微信
//判断是否是事件类型
if (result.Event) {
//处理事件类型
switch (result.Event) {
case "subscribe":
//关注公众号
break;
default:
}
} else {
//处理消息类型
switch (result.MsgType) {
case "text":
//处理文本消息
break;
case "image":
//处理图片消息
break;
case "voice":
//处理语音消息
break;
case "video":
//处理视频消息
break;
case "shortvideo":
//处理小视频消息
break;
case "location":
//处理发送地理位置
break;
case "link":
//处理点击链接消息
break;
default:
}
}
}
})
});
} catch (err) {
res.send(err);
}
});
Из приведенного выше кода видно, что вся обработка сообщений происходит вpost
Общий процесс заключается в том, что сервер получает фиксированный форматxml
строка, конкретный формат выглядит следующим образом:
<xml>
<ToUserName><![CDATA[${toUser}]]></ToUserName> //接收方
<FromUserName><![CDATA[${fromUser}]]></FromUserName> //发送方
<CreateTime>${new Date().getTime()}</CreateTime> //发送时间
<Event>< ![CDATA[VIEW] ]></Event> //事件类型
<MsgType><![CDATA[text]]></MsgType> //消息类型
<Content><![CDATA[${content}]]></Content> //内容
</xml>;
когда получилxml
После сообщения используйтеxml2js
Разобратьxml
,согласно сEvent
а такжеMsgType
Сделайте оценку типа события и выполните соответствующую обработку, и, наконец,res.send(xml)
При отправке данных также необходимо иметьxml
Отформатируйте данные, обратите внимание на то, чтоToUserName
а такжеFromUserName
Не заблуждайтесь! Конкретный документ имеет подробное объяснение,Документация нажмите здесь;
Хорошо, это все, что касается сегодняшнего контента, есть еще немного контента о создании access_token и о том, как вызывать js-sdk, пожалуйста, обновите его через два дня!
Брат, вот шаблон подмостей для управления фоном реакции, если тебе это нужно, ты можешь подобрать его сам.ткни меня, ткни меня, ткни меня, github
Сфокусируйся на
Привет всем, я Арбуз Таро, небольшой фронтенд, расположенный в Ханчжоу, я сегодня остаюсь в Наггетс и пишу статью в первый раз. Перемещение кирпичей будет более мотивированным!