登陆流程

开发接口

  • 微信登陆授权流程如下
    • 用户访问小程序,触发app.jswx.login 方法,获取到code并存储入 app.globalData
    • 当用户点击登录按钮,通过app.globalData获取code,并发起request到服务器,服务器通过包装url(含codeappidsecret)获取用户的openid,并返回给小程序;
    • 小程序获取用户的基本信息,并向服务器发起查询,若该openid已注册用户,则直接登录,若未注册,则把用户信息录入数据库,再登录;作为唯一标识的openid,则存入小程序缓存中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
getOpenId(){
// 1. 获取登陆评证
wx.login({
success:(res)=>{
let code = res.code;
// 2. 将登陆凭证发送服务器端
wx.request({
url: 'http://localhost:5000/getOpenId?code='+code,
success:function(res){
console.log(res)
}
})
}
})
},

服务创建

  • 使用node搭建一个服务器,用于向微信服务器发送请求;首先引入一个包
1
npm install flyio
  • 向微信服务器发送请求获取openid,然后与用户的其它信息关联,比如id主键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 //1. 引入Express
const express = require('express');
const Fly = require('flyio/src/node')

//2. 创建应用对象
const app = express();
const fly = new Fly();

//3. 创建路由规则
app.get('/getOpenId', async (request, response) =>{
// 获取参数
let code = request.query.code
let appId = "wx8xxxcce4"
let appSecret = "36d0xxxxf477bf"
console.log(code)
// 发请求给微信服务器获取openIds
let url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`
let result = await fly.get(url)
let openId = JSON.parse(result.data).openid
//设置响应
response.send(openId);
});


//4. 监听端口启动服务
app.listen(5000,()=>{
console.log("服务已经启动,5000 端口监听中...")
})

数据加密

  • 实际开发中不能直接把openid返回给用户,需要进行加密;引入一个包jsonwebtoken
1
npm install jsonwebtoken
  • openid加到用户信息里加密返回给用户客户端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//1. 引入Express
const express = require('express');
const Fly = require('flyio/src/node')
const jwt = require('jsonwebtoken')
//2. 创建应用对象
const app = express();
const fly = new Fly();

//3. 创建路由规则
//request是对请求报文的封装
//response是对响应报文的封装
app.get('/getOpenId', async (request, response) =>{
// 获取参数
let code = request.query.code
let appId = "wx8aa2408a35c9cce4"
let appSecret = "36d07ff389a532d3c9d00d4fa0f477bf"
console.log(code)
// 发请求给微信服务器获取openIds
let url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`
let result = await fly.get(url)
let openId = JSON.parse(result.data).openid
// 与用户信息相关联
let person = {
name:'admin',
openid: openId
}
// 对用户的数据进行加密,生成token返回给客户端,第二个参数为加密的令牌
let token = jwt.sign(person,'xcawdwa')
//设置响应
response.send(token);
});


//4. 监听端口启动服务
app.listen(5000,()=>{
console.log("服务已经启动,5000 端口监听中...")
})
  • 用户请求得到token,登陆成功后,下次请求需要携带token进行验证
1
2
3
let info = jwt.verify(token,'xcawdwa')
//设置响应
response.send(info);

项目上线

上传代码

  • 一个小程序的发布上线,一般要经过【上传代码】【提交审核】【发布】这三个步骤。编码完成后,可以在开发工具右上角点击上传按钮将代码至微信后台

  • 输入相关版本号确定之后可以在微信小程序后台管理【版本管理】处看到提交的版本

  • 然后可以【提交审核】发布为【线上版本】,供所有小程序用户使用,前提需要完善小程序资料

发布上线

  • 审核通过上线后,可以获取二维码进行小程序推广;获取二维码的步骤如下
  • 【登录小程序管理后台】【设置】【基本设置】【基本信息】【小程序码及线下物料下载】