参数
ssh远端连接服务器
会经常碰到
Permission denied, please try again.
npm i pm2 -S
pm2 ecosystem
| pm2 init
生成 ecosystem.config.js
ecosystem.config.js
`pm2 deploy production setup
pm2 deploy production update
因为需要调用微信的api,因而需要一台服务器,目前可以两种选择。
此处需要注意, 端口号需要是
80
,同时腾讯服务器可以访问到,主要是为了确保腾讯服务器能跟自己的服务器进行正常沟通
利用前台传入的 code
来换取 token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
利用上面请求回来的 token等参数来获取用户信息
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
node 代码所在位置
code
const Hapi = require('hapi')
const Axios = require('axios')
const init = async () => {
const server = Hapi.server({
port: 80,
host: '172.16.0.6'
// port: 8080,
// host: 'localhost'
})
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
// 此处用来保证腾讯服务器跟自己的服务器通讯正常
/**
* 此处做了简化操作
*/
const { echostr = 7777 } = request.query
return echostr
}
})
server.route({
method: 'post',
path: '/login',
handler: async (request, h) => {
const { code } = request.payload
try {
const Url = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxe77d6963852aebca&secret=447b96c081d99e68b192b491412a1900&code=${code}&grant_type=authorization_code`
const res1 = await Axios.get(Url)
const { access_token, openid } = res1.data
const UserUrl = `https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${openid}&lang=zh_CN`
const data = await Axios.get(UserUrl)
return data.data
} catch (e) {
throw new Error(e)
}
}
})
await server.start()
console.log('Server running on %s', server.info.uri)
}
process.on('unhandledRejection', (e) => {
process.exit(1)
})
init()
代码短短几十行但是需要跑通,以及没有问题,确实有些困难
无权限
{ Error: listen EACCES 172.16.0.6:80
at Object._errnoException (util.js:1022:11)
at _exceptionWithHostPort (util.js:1044:20)
at Server.setupListenHandle [as _listen2] (net.js:1350:19)
at listenInCluster (net.js:1408:12)
at doListen (net.js:1517:7)
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:695:11)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '172.16.0.6',
port: 80 }
添加
sudo
error listen EADDRINUSE
link
解决办法,关闭对应端口的进程
sudo fuser -k 3000/tcp
注意微信服务返回的数据结构,之前一直以为是直接获取,没想到还有
data
包裹了一层
sudo
来执行,这就导致自动化部署,命令执行了,却因为权限而没有成功原文:https://www.cnblogs.com/sinosaurus/p/11408617.html