小程序登录
Posted 飞鸟和蝉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序登录相关的知识,希望对你有一定的参考价值。
- 通过wx.login 获取微信返回token:
- 安装异步请求request包(和axios是同类)
cnpm i request –S
在小程序端通过wx.login获取code(在小程序端不要使用他,code是一次性的) - 在后端需要请求微信官方的接口,把code和appid秘钥等等传给微信官方,等待微信官方返回openid。也就是用户身份信息
- 如果返回的字段带有 errcode:"40016",就是说明 wx.login返回的token已经过期:
- 如果返回的是 openid, 则获取信息正确.
前端微信用户登录即注册,所以在登录前需要判断有无此用户,如若无,则新增一位前台用户,再执行登录
- 但是现在返回的openid是一个 明文的信息 , 所以需要使用 jwt来加密token
此时的token已经被加密 - 代码:
var express = require(\'express\'); var router = express.Router(); var models = require(\'../../models\') const request = require(\'request\');// 用来请求接口 var jwt = require(\'jsonwebtoken\');// 加密 router.post(\'/login\',function(req,res,next){ var code = req.body.code request.get({ url:\'https://api.weixin.qq.com/sns/jscode2session\', json:true, qs:{ grant_type:\'authorization_code\', appid:\'wx4a9965771e11b4bd\', secret:\'e94f1c12cb09e31bff0f12826f945b60\', js_code:code } },async(err,respose,data)=>{ // 1. 判断data里面有没有 errcode,有就是token过期了,直接return if(data.errcode){ return res.json({success:false,msg:\'code已过期\'}) } // 2.否则就 查询openid存不存在 let user = await models.User.findOne({ where:{openid:data.openid} }) // 3.如果openid不存在,就直接添加这个openid 和 普通权限 if(!user){ user = await models.User.create({openid:data.openid,admin:0}) } var token = jwt.sign({ user:{ id:user.id, openid:data.openid, admin:false } },process.env.SECRET,{expiresIn:60 * 60 * 24 * 7}) res.json({success:true,message:\'登陆成功\',token:token}) }) }) module.exports = router;
以上是关于小程序登录的主要内容,如果未能解决你的问题,请参考以下文章
Android获取各个应用程序的缓存文件代码小片段(使用AIDL)