• 技术文章 >微信小程序 >小程序开发

    简单介绍:实现小程序授权登录功能

    WBOYWBOY2022-11-07 20:24:49转载349
    本篇文章给大家带来了关于微信小程序的相关知识,其中主要介绍了怎么实现小程序授权登录功能的相关内容,下面一起来看一下,希望对大家有帮助。

    php入门到就业线上直播课:进入学习

    【相关学习推荐:小程序学习教程

    在我们平时工作、学习、生活中,微信小程序已成为我们密不可分的一部分,我们仔细留意下,每当我们使用一个新的小程序时,总会遇到如下页面:

    87124e9520702c0a95a03b66386e57c.jpg

    这便是微信小程序授权登录功能了,授权登录后,我们就可以正常使用小程序,而小程序也会获取到我们的用户权益,手机号等个人信息

    授权登录功能剖析

    微信小程序的授权登录具体步骤如下所示

    tapd_20655371_base64_1663653456_27.png

    具体实现主要有以下三个步骤:

    步骤实现代码如下:

    一、获取临时登录凭证code

    由于微信官方修改了getUserInfo接口,现在无法实现一进入微信小程序就会自动弹出授权窗口,所以我们只能通过button按钮让用户手动触发

    我们先写一个简单的弹框,用isShow变量控制,isShow取决于步骤3中的缓存信息,当所有步骤都走通,会正确缓存用户信息,此时弹框隐藏,否则弹框都为显示状态

    1665209888640.png

      <view class='wx_dialog' wx:if="{{isShow}}">
            <view class='wx_content'>
              <text>需要先授权获取个人信息</text>
              <button class="btn" open-type="getPhoneNumber" type="primary" bindgetphonenumber="getUserInfo">微信账号快速授权</button>
            </view>
      </view>

    点击按钮时,调用getUserInfo方法,isShow设置为false,同时使用wx.login获取到登录凭证code

    getUserInfo:e=>{      this.setData({        isShow:false
          })
    
          wx.login({        success: function (res) {               let code = res.code // 登录凭证code
             }
          })
          
      }

    二、根据登录凭证code,获取用户登录信息

    拿到登录凭证code后,调用auth.code2Session 微信api接口(此处为服务端操作,后端大佬搞定,我们直接调用他给的接口就好)

             wx.request({                url: 获取用户信息的auth.code2Session微信api接口,                method: 'POST',                data:{                  code:code//登录凭证code
                    },                header: {                  'content-type': 'application/json;charset=UTF-8'
                    },                
                    success: function (res) {                  var userphone= res.data.data                  //解密手机号
                      var msg = e.detail.errMsg;                  var sessionKey = userphone.session_key;//会话密钥
                      var encryptedData=e.detail.encryptedData; //签名
                      var unionid = userphone.unionid//唯一标识
                      var iv= e.detail.iv;                  //授权成功
                      if (msg == 'getPhoneNumber:ok') {
                        wx.checkSession({                      success:function(){                        //进行请求服务端解密手机号
                            this.deciyption(sessionKey,encryptedData,iv,unionid);
                          }
                        })
                      }
                    }
                  })
            }
          })

    此时大多数用户信息我们已经获取了,但用户手机号,用户头像等信息还处于加密状态,我们需要去解密获取这些参数

    三、根据用户信息,解密获取用户手机号

    deciyption(sessionKey,encryptedData,iv,unionid){    var that = this;
        wx.request({      url: 解密接口,      method: 'POST',      data: {        sessionKey: sessionKey,        encryptedData:encryptedData,        iv: iv
          },      header: {        'content-type': 'application/json;charset=UTF-8'
          },      success: function(res) {
            let data = res.data        if (data.resultCode == 'success') {
                wx.setStorageSync('userTel', data.data.phoneNumber);//存储解密后的用户手机号
            }else{
                wx.showToast({                title: '获取信息失败请重新授权',                icon: 'none'
                })
                that.setData({                isShow:true
                })
            }    
          },
          fail:function(res) {
            wx.showToast({            title: '获取失败请重新授权',            icon: 'none'
            })
            that.setData({          isShow:true
            })
          }
        })
      },

    此时授权登录功能已完成

    6045b4b0db6d90284057a86181de50f.jpg

    【相关学习推荐:小程序学习教程

    以上就是简单介绍:实现小程序授权登录功能的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:微信小程序
    上一篇:教你如何在小程序中用公众号模板消息(附详细思路) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 微信小程序WXML模板语法总结• 微信小程序之页面路由知识点总结• 微信小程序全局配置以及页面配置详解• 微信小程序实战项目之富文本编辑器实现• 微信小程序开发之宿主环境详解
    1/1

    PHP中文网