1、用户通过login()方法获取code,然后把code传给开发后台,后台通过code 以及appid以及密钥获取openid和sessionkey 进行登陆,然后返回一个token给前端
2、前端拿到token之后存储到globalData里的变量当中,这样其他页面就是可以同过var app=getapp();app.globalData调用token,但是全局变量会随之小程序关闭,就会清除变量,所以我们要将token存到缓存当中,
① 在onLaunch中token的具体流程是
1、用户打开小程序,在页面上调用小程序中的wx.login(Object object)接口,调用该接口获取登录凭证(code)通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。更多使用方法详见小程序登录。
2、获取openid、unionId和session_key。将登录态code发送给自己的后台服务器,后端服务调用auth.code2Session接口
登录凭证校验。通过wx.login接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见小程序登录。
3、首次登录获取用户信息。微信小程序API近期又做了调整,之前用的好好的getUserInfo做了重大调整,无法直接获取用户信息了,比如昵称头像等等,当然2021年4月13日上线前的小程序不受影响,如果想要再次升级新版本,即必须涉及到更换获取用户授权的修改,将getUserInfo改成getUserProfile接口。
推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认开发者妥善保管用户快速填写的头像昵称,避免重复d窗。建议保存信息,这样后面就无需重新获取。
4、通过上面三步,保存相关信息。就可成功登录微信小程序了,但是还需要做登录维护。
如果用户登录小程序后,然后又退出该小程序了。在一段时间内,再次进入该小程序,视为有效登陆,如果超出指定的时间,则视为无效登陆,需要重新登陆。
1、appid: 微信小程序/公众号的唯一凭证,即 AppID。
获取途径:可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)
用途:小程序的 AppID 相当于小程序平台的一个身份z,会在很多场景中使用,比如小程序的登录、授权等
2、openID: openID 是微信生态下 应用的唯一标识 , ,即同一个用户在不同的小程序下的openid是不同的。
获取途径:调用 auth.code2Session 接口,通过code(登录凭证,调用wx.login获取)+appid+appsecret(小程序密钥,获取方式和appid一样)可以换取openid,即 静默授权。
用途:用于在开发者系统中标识用户信息
3、UnionID:UnionID 是微信生态下 用户的唯一标识 ,换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
获取途径:绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。
1)开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户授权。
2)小程序端调用云函数时,可在云函数中通过 Cloud.getWXContext 获取 UnionID。
用途:标识同一个微信开放平台下的用户,可用于去重判断
也就是我们常用的微信移动端/PC端之间的扫码登录,PC端用微信扫码登录,微信移动端确认授权登录后,应用可以从微信拿到用户的open id或union id,将微信获取的用户信息与自己账户体系中的用户身份进行关联;
需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关注相关微信公众号等都可以获取。
1、静默授权不需要用户确认,只需要用户访问某个网页,属于嵌套在普通网页里的授权形式,但是只能获取到用户的唯一标示openid和union id,无法拿到用户的微信头像、微信名称等个人信息,对于用户的简单认证还是很有用的。
2、静默授权的过程:
1)调用 wx.login() 获取 临时登录凭证code
2)调用 auth.code2Session 接口,换取用户唯一标识 openID
3)调用本地后台服务,将 openID 映射到本地的 userId
微信开发文档-小程序登录流程
参考文章:
1、 【微信小程序用户授权登录】
2、 微信第三方登录(静默授权和非静默授权)
3、 openid会变吗?微信小程序开发中的appid、openid、unionid使用总结
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)