小程序服务端接入登录
一直想开发一款个人的小程序,但是一直没想好要做什么。有没有什么东西是大家刚好都需要,并且以我目前的能力又可以实现了的需求呢?我一直在想这个问题,但是始终没有一个合适的答案。
我不打算再等我想好要做什么的时候在去做这个事情了,周末的时候用基于Node的Express框架搭了一个后端的服务,先写了一个支持用户登录的接口,目前这个登录只支持小程序一键登录,不支持手机验证码登录,后期如果考虑支持手机验证码登录的话,需要接入短信能力。
用Node来进行服务端开发,还是比较简单的。因为小程序的登录流程我们都知道:客户端调用wx.login
获取code,将code
传给服务端,服务端调用jscode2session
这个Api传入code
,appId
及appSecret
换取session_key
和openid
,然后生成一个和session_key
相关联的token
返回给客户端即可。
客户端在接下来的业务逻辑中,每次请求都携带token,服务端进行校验即可。
示例代码:
代码语言:javascript复制const conf = require('../config/index')
const Promise = require('bluebird')
const _ = require('lodash')
const request = Promise.promisify(require('request'))
const sha1 = require('sha1')
const jwt = require('jsonwebtoken')
module.exports = {
login(req, res) {
const { code } = req.body
const data = {
code: 200,
data: {
token: '',
msg: '登录成功!'
}
}
let url = `https://api.weixin.qq.com/sns/jscode2session?appid=${conf.appInfo.appId}&secret=${conf.appInfo.AppSecret}&js_code=${code}&grant_type=authorization_code`
request({ method: 'GET', url: url, json: true }).then((r) => {
console.log('r', r.body)
const { session_key, openid } = r.body
// 获取session_key及openid以后==>生产token返回给客户端
let token = jwt.sign({
name: openid,
}, session_key, {
expiresIn: 60
})
// 将token及openid.session_key 存入数据库,并将token返回客户端,通知登录成功
data.data.token = token
res.send(data)
})
}
}
代码还需要进行优化,核心点就在于用request
请求了jscode2session
这个接口,取到session_key
之后用jwt
生成了一个用户返回给客户端的token。
Linux shell脚本中的grep
GREP是Global search Regular Expression and Print out the line
的简称,即全面搜索正则表达式并把行打印出来。GREP是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep也是Linux中最广泛使用的命令之一。
前端图片优化工具
前端图片优化的一项重要手段就是尽量减小图片的体积,使得图片的体积尽可能的小,这些包可以在前端图片压缩中发挥出巨大的作用,有兴趣的可以尝试一下。
imagemin
imagemin-mozjpeg
imagemin-pngquant
代码示例:
代码语言:javascript复制const imagemin = require('imagemin');
const PNGImages = 'assets/images/*.png';
const JPEGImages = 'assets/images/*.jpg';
const output = 'build/images';
const imageminMozjpeg = require('imagemin-mozjpeg');
const optimiseJPEGImages = () =>
imagemin([JPEGImages], output, {
plugins: [
imageminMozjpeg({
quality: 70,
}),
]
});
optimiseJPEGImages()
.catch(error => console.log(error));
信息技术和世人的价值观
晚上下班的路上我想到了一个问题,信息技术的发展究竟给我们带来了什么?
从固定电话,小灵通,手机,智能机到现在的移动互联网。信息传递的速度越来越快,生活的确是越来越便捷。但是总觉的好像少点什么。
以前没有手机的年代,我们总是找一本书,找个地方静静的翻看,体会书中的人物故事。有时间去思考书中的一些问题,但是现在,不停的在手机上翻看短视频,让我们基本上丧失了思考的时间和思考的能力,对于生活似乎越来越麻木。
现在的年轻人,尤其是小孩子,从小就生活在一个信息爆炸的时代。各种各样的信息,各种各样的应用,让人眼花缭乱,尤其是各种短视频平台,里面的内容很多宣传的价值观并不正确。而且这一代人并没有什么苦日子的经历,也没有什么能力去辨别哪些好的那些是坏的。
从某种层面上讲,这些短视频平台中其实也是整个社会价值观的一种体现。以金钱为导向,一切向钱看,这种价值观使得整个社会的人心浮躁,在这种环境下,很难有人能够静下心来去思考自己究竟应该秉持一种什么样的价值观。
我忽然想到一句话:以价值为导向
。这里的价值并不是以金钱来衡量的,而是以我想成为一个什么样的人,我的目标和使命是什么为导向。而是以我可以为这个社会,我可以为这个国家贡献什么来衡量。比如我希望成为一个科学家,则以我可以为国家贡献某些技术成果。假如我只是个普通人,则我能为国家的安定团结贡献自己的一份力。
这种想法我觉得更像是以使命
为导向。
徐克的电影《倩女幽魂》里有一句台词:世人皆崇拜偶像
。希望我们的下一代崇拜的偶像不再是哪些涂脂抹粉的娘炮,而是那些有傲气傲骨的中国脊梁!