微信是一款广受欢迎的即时通讯软件,为了方便用户在Mac电脑上也能使用微信,微信团队推出了Mac版微信。本文将主要讲解微信mac版历史版的完整代码示例以及使用方法。
一、下载微信mac版历史版
在官网上下载微信mac版,我们可以得到一个.dmg的安装文件。打开文件并进行安装后,我们就可以使用微信了。
二、连接微信API接口
要想使用微信API接口,我们首先需要在微信公众平台进行开发者认证,获取相应的接口权限。认证过后,在接口权限中可以获取到一组WebSocket链接地址。我们需要使用WebSocket连接到该地址,使用socket.io库来进行连接。
接下来是连接代码示例:
const io = require('socket.io-client');
const WebSocket = require('ws');
const uuid = require('uuid');
const Qrterminal = require('qrcode-terminal');
const md5 = require('md5');
const API = 'wss://web.wechat.com'
let ioInst = null;
let connectFlag = false;
let uuidKey;
let ws;
function startWechat() {
ws.on('open', () => {
console.log('webSocket connect success')
connectFlag = true;
ioInst = io(API, {transports: ['websocket']});
ioInst.on('connect', () => {
console.log('socket io connect success')
})
ioInst.on('disconnect', () => {
console.log('socket io disconnect')
})
})
ws.on('message', (data) => {
if (data.indexOf('wx2.qq.com/cgi-bin/mmwebwx-bin/webwxpushloginurl') > 0) {
console.log('uuid getted:', data)
uuidKey = data.match(/uuid=.+/)[0]
Qrterminal.generate(API + '/qrcode/' + uuidKey.slice(5));
} else if (data.indexOf('window.code=') === 0) {
const code = +data.match(/window.code=(\d+);/)[1]
switch (code) {
case 201: {
console.log('scan success,请在手机上确认登录')
break;
}
case 200: {
console.log('login success')
const currentUserName = data.match(/(.*?)<\/skey>/)[1]
break;
}
case 408: {
console.log('login timeout')
break;
}
default:
break;
}
}
})
ws.on('close', () => {
console.log('webSocket disconnect')
ioInst && ioInst.disconnect()
connectFlag = false;
})
ws.on('error', (err) => {
console.log('webSocket error', err)
})
}
function startWebSocket() {
return new Promise((resolve, reject) => {
ws = new WebSocket('wss://webpush2.weixin.qq.com/cgi-bin/mmwebwx-bin/synccheck')
ws.on('error', (e) => {
console.log('webSocket error', e);
reject(-1);
});
ws.on('open', () => {
console.log('webSocket connect success');
resolve(0);
});
ws.on('message', (data) => {
console.log(`webSocket receive message: ${data}`);
});
ws.on('close', () => {
console.log('webSocket disconnect');
});
});
}
function uuidFunction() {
return new Promise((resolve, reject) => {
if (connectFlag) {
const clientMsgId = Date.now() * 1000 + Math.floor(Math.random() * 1000 + 1);
const data = {
"BaseRequest": {
"Uin": "",
"Sid": "",
"Skey": "",
"DeviceID": "e225488245189445"
},
"Code": 3,
"FromUserName": "",
"ToUserName": "",
"ClientMsgId": clientMsgId.toString()
}
ioInst.emit('newlogin', data, (response) => {
uuidKey = response.baseResponse.redirectUrl.split('uuid=')[1]
console.log(`wxuuid: ${uuidKey}`);
startWebSocket().then(() => {
check();
});
})
setTimeout(() => {
reject('timeout')
}, 30000)
} else {
reject('connectFlag is false')
}
})
}
function check() {
setInterval(() => {
if (connectFlag) {
ws.send('2')
} else {
console.log('check error:connectFlag is false')
clearInterval()
}
}, 5000)
}
startWebSocket().then(() => {
console.log('webSocket connect success');
startWechat();
uuidFunction();
});
三、发送文本消息
与服务器的WebSocket连接成功后,我们就可以发送文本消息给其他微信用户或者群组了。发送文本消息需要以下几个步骤:
- 获取消息发送的toUserName和LocalID
- 构建消息体
- 将消息体发送给服务器
下面是发送文本消息的代码示例:
const toUserName = '@XXXXX';
const localID = Date.now().toString() + Math.random().toString().slice(2, 7);
const text = {
Type: 1,
Content: '你好,世界!',
FromUserName: '你的微信号',
ToUserName: toUserName,
LocalID: localID,
ClientMsgId: localID
};
ioInst.emit('message', text, (response) => {
console.log(response);
});
四、小标题4
其他的功能也均可以通过WebSocket与服务器进行交互来实现。
五、总结
本文主要讲解了在Mac电脑上使用微信的方法以及微信API接口的使用。同时,也展示了一些基本的代码示例,供大家参考使用。
原创文章,作者:TGZTY,如若转载,请注明出处:https://www.506064.com/n/374528.html
微信扫一扫
支付宝扫一扫