小程序登錄,后台接口


  1. 通過wx.login 獲取微信返回token:
    image
  2. 安裝異步請求request包(和axios是同類)
    cnpm i request –S
    在小程序端通過wx.login獲取code(在小程序端不要使用他,code是一次性的)
  3. 在后端需要請求微信官方的接口,把code和appid秘鑰等等傳給微信官方,等待微信官方返回openid。也就是用戶身份信息
    image 

  4. 如果返回的字段帶有  errcode:"40016",就是說明 wx.login返回的token已經過期:
    image
  5. 如果返回的是 openid, 則獲取信息正確.
    前端微信用戶登錄即注冊,所以在登錄前需要判斷有無此用戶,如若無,則新增一位前台用戶,再執行登錄
     image
  6. 但是現在返回的openid是一個 明文的信息 ,  所以需要使用 jwt來加密token
    image
    此時的token已經被加密
  7. 代碼:
  8. 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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM