业务流程:

1:首先需要一个按钮触发事件

2:调用微信小程序的登录接口wx.login,拿到code

3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息

4:拿到的个人信息调用后台的接口,把个人信息传给后台,登录成功并把相关信息存储在本地的缓存中,方便之后的开发使用

 

调用微信小程序的登录接口:wx.login(Object object)

调用微信获取用户个人信息的接口:wx.getUserProfile(Object object)

调用微信获取用户的当前设置的接口:wx.getSetting(Object object)

 

下面开始用代码介绍

wxml:

<view>
    <button bindtap="login">登录</button>
</view>

js:

//登录按钮触发的事件
login(){
  let that = this
    //调用微信小程序的登录接口
   wx.login({
      success(e) {
        that.data.loginInfo.code = e.code //拿到的code存储在data中
        wx.showModal({
          title: '温馨提示',
          content: '微信授权登录后才能正常使用小程序功能',
          cancelText: '拒绝',
          confirmText: '同意',
          success( sucessInfo ) {
            //调用微信小程序的获取用户信息的接口
            wx.getUserProfile({
              desc: '用于完善会员资料', // 声明获取用户个人信息后的用途
              lang: 'zh_CN',
              success(info) {
                //把获取到的信息复制到data中的loginInfo中
                that.data.loginInfo = Object.assign( that.data.loginInfo, info )
                //调用后台的接口,把所有整合的个人信息传过去
                that.handlerLogin( that.data.loginInfo )
              },
              fail(e) {
                console.log('获取用户信息失败', e)
                
              }
            })
          },
          fail() {
            console.log("拒绝")
          },
          complete() {}
        })
 
      },
      fail(e) {
        console.log('fail', e)
        wx.showToast({
          title: '网络异常',
          duration: 2000
        })
        return
      }
    })
 
}
 
//调用后台的登录接口
  handlerLogin( loginInfo ) {
    let that = this
    //login是后台接口封装的方法
    login( loginInfo ).then(( res ) => {
      console.log('登录成功', res)
      let { cache_key, expires_time, token, userInfo } = res.data
       //把用户信息存储到storage中,方便其它地方使用
      wx.setStorageSync('cache_key', cache_key)
      wx.setStorageSync('expires_time', expires_time)
      wx.setStorageSync('token', token)
      wx.setStorageSync('isLog', true)
      wx.setStorageSync('userInfo', JSON.stringify( userInfo ))
      wx.setStorageSync('loginRecord', new Date().getTime())
    })
    .catch(( res ) => {
      console.log('catch', res)
    })
    .finally(() => {
      console.log('finally')
    })
  }

 

参考文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

参考文档:https://blog.csdn.net/weixin_48145150/article/details/123897786

 

原文地址:http://www.cnblogs.com/XUYIYUAN/p/16899088.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性