微信小程序--登录/授权

在说登录之前,可以先检测是否是登录状态

wx.checkSession() :检查登录态是否过期

wx.checkSession({

    success() { // session_key 未过期,并且在本生命周期一直有效 },

    fail() { // session_key 已经失效,需要重新执行登录流程 wx.login() // 重新登录 }

}) 

登录

登录就是要让开发者服务器知道当前的用户是谁,通常我们开发登录功能,都是要让用户输入账号和密码才能实现登录操作。在微信小程序中,我们可以通过微信服务器来完成这个操作,获取到与当前用户对应的唯一标识(openId)。

注意:每个用户相对应于每个微信应用的openId是唯一的,也就是说一个用户相对于不同的微信应用会存在不同的openId

微信小程序--登录/授权_第1张图片
流程图

从上图中,我们可以看出,小程序要想实现登录的几步:

一、调用wx.login()

小程序前端使用wx.login()从微信服务器获取code

微信小程序--登录/授权_第2张图片

二、从微信服务器获取openid

将获取到的code发送给开发者自家的服务器,服务器利用appId、appSecret和code向微信服务器换取用户openId和session_key

三、开发者服务器自定义登录态并将其与openId 和session_key 关联起来然后写session

四、开发者服务器将登录态返回给小程序前端,小程序前端使用wx.setStorageSync() 将登录态保存起来

五 、小程序端 wx.getUserInfo 获取用户信息 + wx.getStorage 获取 3rd_session 数据后,发送给开发者服务器,以便开发者服务器知道当前操作的用户是哪位。

也就是说,在整个过程中小程序前端是拿不到用户openId 的,它只能通过开发者服务器发给它的登录态来告诉服务器当前用户的信息。

授权:小程序的API接口中有些接口是需要用户授权才可以调用的,以调用获取用户信息

授权有这样几种方式:

1.wx.authorize()

但是调用这个api,来授权用户信息,是不会出现授权弹窗的。

想要出现授权弹窗,还需用第二种方式

2.

你可能感兴趣的:(微信小程序--登录/授权)