이 글은 주로 NodeJ를 사용하여 WeChat 공개 계정을 위한 WeChat 이벤트 상호 작용 예제를 개발하는 방법에 대한 정보를 소개합니다. 필요한 친구가 이를 참조할 수 있습니다.
WeChat 공개 계정이 활성화되면 규칙이 있습니다. , 기타 모든 일반 함수는 인터페이스를 통해 호출해야 합니다. 예를 들어 맞춤 메뉴 기능은 포스트 요청을 전송하여 생성해야 합니다. 이번 장에서는 팔로우부터 언팔로우까지의 전체 과정을 통해 nodejs가 WeChat과 어떻게 상호작용하는지에 대해 이야기하겠습니다. 이러한 기능의 입구는 테스트 공식 계정에 입력한 URL입니다(이하 /login/wechat로 대체).
이벤트 상호작용
QR 코드를 스캔하여 WeChat 공식 계정을 팔로우한 후 WeChat에서 인터페이스에 전화를 겁니다. login/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();
를 도입하여 req의 모니터링 데이터를 통해 WeChat에서 보낸 xml 패키지를 가져옵니다. 다음은 신규 사용자가 공식 계정을 팔로우한 후 WeChat에서 백엔드 인터페이스(이전 기사에서 언급한 /yourapi)로 전송한 xml 패킷 데이터입니다. 분석 결과, 그 구조는 다음과 같습니다.
tousername: Recipient [여기에 공개 WeChat 계정]
fromusername: Sender [여기에 사용자 openid]
createTime: 보내는 시간
msgtype: 메시지 유형 [이벤트(응답 이벤트), 텍스트(푸시 메시지), 이미지(푸시 텍스트 메시지) 등]
이벤트: 메시지 이름 [여기를 팔로우하세요. ]
eventkey: 웹페이지 설정 시 사용자 정의할 수 있는 키입니다.
위 내용은 다음과 같이 사용됩니다. a 사용자가 주의를 기울인 후 WeChat이 인터페이스로 보낸 데이터 패킷입니다. 위에서 우리에게 유용한 것은 팔로어의 openid인 fromusername입니다. 팔로우할 때 사용자의 openid를 얻은 후 WeChat(https://api.weixin.qq.com/)에서 제공하는 특정 인터페이스를 사용할 수 있습니다. cgi-bin/ user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN) 사용자의 아바타, 성별, 닉네임 및 기타 정보를 획득하여 신뢰할 수 있는 앱 데이터베이스를 구축하세요.
코드 구현
//微信事件推送的入口 app.post('/yourapi', function(req, res, next) { //获取参数 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; //排序参数 oriArray.sort(); var original = oriArray[]+oriArray[]+oriArray[]; //加密 var scyptoString = sha(original); //判断是否与你填写TOKEN相等 if (signature == scyptoString) { //获取xml数据 req.on("data", function(data) { //将xml解析 parser.parseString(data.toString(), function(err, result) { var body = result.xml; var messageType = body.MsgType[]; //用户点击菜单响应事件 if(messageType === 'event') { var eventName = body.Event[]; (EventFunction[eventName]||function(){})(body, req, res); //自动回复消息 }else if(messageType === 'text') { EventFunction.responseNews(body, res); //第一次填写URL时确认接口是否有效 }else { res.send(echostr); } }); }); } else { //认证失败,非法操作 res.send("Bad Token!"); } }); //微信客户端各类回调用接口 var EventFunction = { //关注 subscribe: function(result, req, res) { //存入openid 通过微信的接口获取用户的信息同时存入数据库。 }, //注销 unsubscribe: function(openid, req, res) { //删除对应id }, //打开某个网页 VIEW: function() { //根据需求,处理不同的业务 }, //自动回复 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 = '已经收到您的建议,会及时处理!' }<br>//将json转为xml xml = builder.buildObject(xml);<br>//发送给微信 res.send(xml); } }
여기서는 JS에서 전략디자인 패턴을 채택하는 것이 적합합니다 모드 , subscribe 메소드에서 자신의 비즈니스를 작성하고, openid 매개변수로 요청을 보내면 WeChat ID를 팔로우하고 세션을 설정할 때 사용자의 여러 정보를 데이터베이스에 저장할 수 있습니다. 이렇게 하면 사용자가 다음에 웹 페이지를 열 때 다시 인증할 필요가 없으며 openid를 비교하고 데이터베이스를 쿼리하기만 하면 됩니다.
위 내용은 NodeJs는 WeChat 공개 계정 WeChat 이벤트 상호 작용 예제 코드를 개발합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
