怎么登陆小程序服务器端,微信小程序如何登录

首先我们看一下官方文档里的说明,接下来逐一说明各个步骤

10b5dfc75a5855be1d0ab429e027152b.png

由于直接解读比较不方便,所以直接举例

首先 getUserInfo

open-type="getUserInfo"

bindgetuserinfo='login'

withCredential='true'>

登录

复制代码

首先我们可以通过button组件的open-type属性来获取到微信的开放信息,同时会触发getuserinfo事件,可以在bindgetuserinfo回调中获取到事件信息,想要获取到用户敏感信息,必须带上withCredegntial=true

ec95ec14ca62ad7add4a4a3a1c770a5c.png

在这里我们可以获取到encrytedData和iv两个数据,注意这里的信息是加密的,想要获取到解密数据接着往下看

1. wx.login

临时登录凭证code ,并回传到开发者服务器。

wx.login({

success: (res)=>loginMe(res.code , iv, encrypted_data)

})

复制代码

wx.login有一个成功回调,我们可以在这里获取到response.code

code:

用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 auth.code2Session,使用 code 换取 openid 和 session_key 等信息

2. wx.request

发送http请求到开发者服务器,也就是自己的服务器,这里我们使用自己封装的http请求函数来发送POST请求

loginMe(code, iv, encrypted_data){

http.post('path', {

code,

iv,

encrypted_data,

app_id,

app_secret,

}

}

复制代码

需要带上code,iv,encrypted_data,还需要两个参数,app_id和app_secret,这是每个小程序的标识符,用于给后端向微信服务获取session_key和openid

3. session_key api

后端服务器获取到code,app_id和app_secret,之后,用code来获取 session_key api

1523c09a766ac8217f15d853c853b492.png

4. session_key |openid

后端发出请求后,微信接口收到请求后返回相应的session_key和openid

session_key

session_key是用于解密前端通过open-type获取到的encrypted_data的,由于前端无法直接获取,所以前端发送请求,后端通过解密后获取信息返回给前端

812eaa388302668e7bfeb8471aab4047.png

5. 自定义登录态

55bedab2fbb3cb6e7f7e70ac466a43c8.png

因此后端应该关联session_key和openid,生成一个自己的session来用于用户登录使用

d3b5614e09b9f9c6efdcafbc6c3c911f.png

这里我们返回到loginMe,在请求回调中我们将后端返回的session存到本地,便于下一次登录使用

wx.setStorageSync('X-token', response.header["X-token"])

复制代码

6.携带登录态发起请求

const _http=(method,url,data)=>{

let header={

"t-app-id":t_app_id,

"t-app-secret":t_app_secret

}

if(wx.getStorageSync('X-token')){

header['Authorization']=`Bearer ${wx.getStorageSync('X-token')}`

}

return new Promise((resolve,reject)=>{

wx.request({})

}

复制代码

在http请求函数中,如果本地session(x-token)存在,则在请求头中设置Authorization,当然这是后端决定的,后端通过此session就可以跟之前的session_key以及openid对应,决定是否返回数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值