微信是一款廣受歡迎的即時通訊軟件,為了方便用戶在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/zh-hant/n/374528.html
微信掃一掃
支付寶掃一掃