时间:2021-05-18
希望通过小程序+node来整体的了解下小程序登陆的流程。如有不对欢迎在评论区指出
1. client: wx.login()
2. service: request()
服务端请求,需要的参数(js_code:client传的code;appid:小程序唯一标识申请账号时拿到;secret:小程序密钥申请账号时拿到;grant_type:默认值为 authorization_code)
// 请求方法const request = require('request')const url = https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_codemodule.exports = {async getSession(code) {return new Promise((resolve, reject) => {request(url,{method: 'GET',json: true},(error, res, body) => {if (error) {reject(error)} else {if (body.errcode) {reject(new Error(body.errmsg))} else {resolve(body)}}})})}}3.service:加密解密处理
4.service:返回登陆态
const { encode } = require('./lib/crypto')const jsonMine = 'application/json'const now = Date.now()function handle(ctx, data, code = 0, message = 'success') {ctx.type = jsonMinectx.body = {code,data,message}}router.get('/login', async (ctx, next) => {const { code } = ctx.request.queryconst session = await login(code)if (session) {const { session_key, openid } = session// 查找数据库中是否已经存有openid,如果 hasOpenid 为null说明是新用户const hasOpenid = await User.findByPk(openid)if(!hasOpenid){// 数据库存储openid,时间戳User.create({openid,timespan:Date.now()})}handle(ctx, { token: encode(openid) })} else {throw new Error('登陆失败')}})5.client:存储登陆态在storage
我在发起请求时将登陆态放在请求头中,相应的服务端可以从请求头中获取
6.service:校验登陆态
整体流程图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
想成为一名优秀的C#程序设计师吗?首先我们要对一个程序有所了解,了解程序设计的流程。一个程序的登陆是如何实现的呢,大家跟着小编来看下,希望对你们今后的学习有所帮
以下是使用微盛提供在小程序内创建门店流程及注意事项,帮助各位轻松开店。工具/原料微信小程序微盛微商城方法/步骤一、登陆微信公众平台,进入你的小程序管理后台。(h
微信小程序自动登陆PHP源码实例app.js初始化APP自动登陆您也可以在任何地方进行用户登陆验证用法:首先在js文件中定义varapp=getApp();ap
微信小程序登陆流程1:session_key和openId是什么?session_key官方说明为:session_key是微信服务器生成的针对用户数据进行加密
在做过一系列小程序之后,对小程序的登陆鉴权的流程也有一定的理解,类似于B端小程序自不必说,要用户信息手机号地址可以一把梭,做一个引导页面进行判断然后要求用户给与