微信小程序登录方式
在微信小程序中,我们大致会涉及到以下三类登录方式:- 自有的账号注册和登录;
- 使用其他第三方平台账号登录;
- 使用微信账号登录(即直接使用当前已登录的微信账号来作为小程序的用户进行登录)。
微信小程序登录流程详解
青锋建站今天主要来和大家讨论一下如何使用微信账号进行登录,因为这种方式和微信平台结合最紧密,用户体验比较好。1、获取登录凭证code
在小程序中登录的第一步,就是先获取登录凭证。我们可以使用wx.login()方法并得到一个登录凭证。我们可以在小程序的App代码中发起登录凭证请求,也可以在其他任何Page页面代码中发起登录凭证请求,主要根据你小程序的实际需要。
2、换取用户标识
将登录凭证发往你的服务端,并在你的服务端使用该凭证向微信服务器换取该微信用户的唯一标识(openid)和会话密钥(session_key)。首先,我们使用wx.request()方法,请求我们自己实现的一个后台API,并将登录凭证(code)携带过去,你的小程序后台需要使用这个传递过来的登录凭证,去调用微信接口换取openid和session_key。微信提供的第三方接口 https://api.weixin.qq.com/sns/jscode2session,
session_key和微信派发的code是一一对应的,同一code只能换取一次session_key。每次调用wx.login(),都会下发一个新的code和对应的session_key,为了保证用户体验和登录态的有效性,开发者需要清楚用户需要重新登录时才去调用wx.login()。session_key是有时效性的,即便是不调用wx.login,session_key也会过期,过期时间跟用户使用小程序的频率成正相关的。
3、生成token
前面说过通过 session_key 来“间接”地维护登录状态,所谓间接,也就是我们需要自己保持登录状态信息 。这里也是要考虑到安全性因素,如果直接使用微信服务端派发的session_key来作为业务方的登录状态使用。那么我们如果生成自己的登录态标识token,这里可以使用几种常见的不可逆的哈希算法,比如md5、sha1等。将生成后的登录状态标识(这里我们统称为"token")返回给前端,并在前端维护这份登录态标识(一般是存入storage)。而在服务端呢,我们会把生成的token存在用户对应的数据表中,前端通过传递token来存取用户的信息。
4、在客户端保存sessionid
在小程序本地使用storage来保存sessionid,以供后续的后台API调用所使用。在调用那些需要登录后才有权限访问的后台服务时,你可以将保存在storage中的sessionid取出并携带在请求中,传递到后台服务,后台代码中获取到该sessionid后,从数据表中查找是否有该sessionid存在,存在的话,即确认该session是有效的,继续后续的代码执行,否则进行错误处理。
前面我们将token存入前端的storage里,每次进行用户数据请求时会带上token,那么如果此时session_key过期呢?所以我们需要调用到wx.checkSession()这个API来校验当前session_key是否已经过期。这个API并不需要传入任何有关session_key的信息参数,而是微信小程序自己去调自己的服务来查询用户最近一次生成的session_key是否过期。如果当前session_key过期,就让用户来重新登录,更新session_key,并将最新的token存入用户数据表中。
以上是青锋建站给大家介绍的有关微信小程序登录流程详解。青锋建站,提供专业的高品质网站制作服务,包括专业网站建设,SEO,网络营销,软件开发,微信小程序开发,网站建设知名品牌,全国接单,为企业构建强有力的营销平台。
转载请注明来源网址:青锋建站-http://www.sjzphp.com/kaifazhe/xiaochengxu/xcxdenglu_1626.html