• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序实现微信登录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  • 本文将简单介绍如何实现小程序的微信登陆
  • 将要使用的api:
    1. wx.checkSession(Object object)
    2. wx.login(Object object)
    3. wx.getStorageSync(string key)
    4. wx.setStorageSync(string key, any data)
    5. wx.request(Object object)

首先我们可以看看官方文档的流程图。官网文档相应链接

流程图大概讲的是,小程序端调用wx.login获取code,然后调用wx.request进行网络请求,携带参数:code,appid,appsecret,后端用这三个参数向微信接口服务请求,得到session_key和openid等数据。紧接着,后端对参数进行处理,返回自定义登录状态,比如说:后端对session_key进行加密,返回加密数据给小程序端。接着,小程序端通过wx.setStorageSync对返回来的处理过的数据存入storage。之后,每当发起业务请求时,如需session_key,小程序端可以向后端传入storage中的登录态,从而获取业务数据。

为了进一步优化用户体验,我们使用wx.checkSession对用户的session_key有效期进行检验,如图。

如图,在用户点击微信登录的按钮时,我们先从storage中取自定义的登录态,如果取到了,那么就检查session_key的有效期,如若有效,则可以做其他事情,如业务请求;如若无效,那么用户调用wx.login重新登录。如果没取到自定义登录态,他么用户调用wx.login登录。

代码如下:

    //点击微信登录按钮触发事件
      onLoginButton(event){
        var that = this;
        let thirdSession = wx.getStorageSync(\'thirdSession\');
        if (thirdSession) {//如果之前有存过thirdSession
          //检查session_key是否在有效期
          wx.checkSession({
            //在有效期
            success(res) {//存储中有有自定义登录状态且在有效期
              //用自定义登录状态进行一些业务请求
              wx.request({
                url: \'\',
                data:{
                  thirdSession,
                }
              })
            },
            //不在在有效期,则需重新登录
            fail(err){
              //调用微信登录请求函数
              that.wechatLogin()
            }
          })
        } else {//如果之前没存过thirdSession,则需登录
          //调用微信登录请求函数
          that.wechatLogin();
        }
      },
      //微信登录请求函数
      wechatLogin(){
       wx.login({
         success(res) {
           let code = res.code;
           wx.request({
             url: \'\',
             data: {
               //三个登录所需参数
               appid,
               appsecret,
               code,
             },
             success(res) {
               //后端返回自定义登录状态,比如说加密过的session_key,其返回值的参数名为thirdSession
               wx.setStorageSync(\'thirdSession\', res.data.thirdSession)
               //and do something
             }
           })
         }
       })
      }

以上就是全部内容,如有不足还望大家多多指正。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序密码表单,显示与隐藏密码发布时间:2022-07-18
下一篇:
微信小程序登录(包括获取不到unionid的情况)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap