开发者使用萤石的
“设备托管”功能,需要发送邮件,其中有个回调地址
1.code
下面使用nodejs写一个回调地址,并将返回的auth_code保存到一个txt文档中
代码中还保存了当前时间,用于确定区分auth_code
const express = require('express');
const fs = require('fs');
const app = express();
const port = 47070; // 暴露端口
// 日期组件
const dayjs = require('dayjs');
const utc = require('dayjs/plugin/utc');
const timezone = require('dayjs/plugin/timezone');
// 引入必要的插件
dayjs.extend(utc);
dayjs.extend(timezone);
// 设置默认时区为上海
dayjs.tz.setDefault('Asia/Shanghai');
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.get('/callback', (req, res) => {
// 从请求中获取授权码
const authCode = req.query.auth_code;
// 获取当前时间,并进行格式化
const now = dayjs().format('YYYY-MM-DD HH:mm:ss');
// 执行获取授权信息的逻辑
fs.appendFile('/auth-code.txt', `${now}--> authCode = ${authCode}\n`, (err) => {
if (err) throw err;
console.log('Auth code appended to file');
});
// 返回响应
res.json({ code: "200" });
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
注意其中的响应结果是{ code: "200" }
2.启动server
npm install express
npm install dayjs
node server.js
ApiPost发送请求
请求写入文件(本案例在根目录下:D:\auth-code.txt)
3.部署到服务器上
使用docker部署到服务器上,首先将所有文件拷贝到服务器中,在目录中添加Dockerfile文件
# 使用 Node.js 的官方镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /usr/src/app
# 复制 package.json 文件到工作目录
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 复制所有文件到工作目录
COPY . .
# 暴露端口号
EXPOSE 47070
# 启动应用程序 注意这里callback.js 要和你的服务js文件名一致
CMD [ "node", "callback.js" ]
在Dockerfile目录下,执行docker命令
docker build -t callback-auth .
docker run -d -p 47070:47070 -v /home/auth-code.txt:/auth-code.txt callback-auth --name callback-auth
这里挂载了auth-code.txt,方便查看
执行cat auth-code.txt,就可以看到返回的auth_code
4.备注
如果发送邮件后,没有收到auth_code,可以根据邮件返回信息,添加工作人员微信,让他们帮你解决