微信小程序实现授权登录及退出

这篇具有很好参考价值的文章主要介绍了微信小程序实现授权登录及退出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.登录获取用户昵称,头像

<view class="userinfo">
  <image src="{{userInfo.avatarUrl}}"></image>
  <view>{{userInfo.nickName}}</view>
</view>
<button plain  bindtap="getUser">授权登陆</button>
<button plain bindtap="exitUser">退出</button>
  // 获取用户信息
  getUser(){
   
    //获得用户的头像和昵称
    wx.getUserProfile({
      desc: '获得用户信息'
     
    }).then((res) => {
        console.log(res.userInfo.avatarUrl,res.userInfo.nickName)
        
        this.setData({
          userInfo:res.userInfo
        })
        
            // 添加到数据库用户列表中 yuyue-user
            wx.cloud.database().collection('yuyue-user').add({
              data:{
                // 添加一个号码,由于id和openid太长,此号码可作为唯一标识
                num: Date.now(),
                // 添加用户昵称和头像
                nickName:res.userInfo.nickName,
                avatarUrl:res.userInfo.avatarUrl
              
              }
            }).then(res=>{
                console.log(res)
                // 添加成功提示
                wx.showToast({
                  title: '登录成功!'
                })
               }).catch(err=>{
                console.log(err)
              })
           
        })
        
       
      })
  }

2.创建云函数

右击新建文件夹cloud

在根目录project.config.json中添加:

"cloudfunctionRoot": "cloud/"

右击文件夹cloud选择当前环境

右击文件夹cloud新建Node.js云函数,命名login

在新建文件夹login的index.js文件中:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    openid: wxContext.OPENID
  }
}

右击login文件夹选择上传并部署:云端安装依赖(不上传node_modules),显示上传成功提示。

3.使用云函数获取openid

根目录app.js中获取openid:

// app.js
App({
  onLaunch() {
    wx.cloud.init({
      env: 'manmanmanman123-2gld2mewb02c0fcb'  //云开发环境id
    })
    // 获取用户的openid
    wx.cloud.callFunction({
      name:'login'
    }).then(res=>{
      console.log(res)
      console.log(res.result.openid)
      //给全局openid赋值  
      this.globalData.openid = res.result.openid
      
    })
  },
  globalData: {
    userInfo: null,
    openid:''
  }
})

4.为防止一个用户在数据库中出现多条登录记录,需要将openid作为查询条件

  // 获取用户信息
  getUser(){
   
    //获得用户的头像和昵称
    wx.getUserProfile({
      desc: '获得用户信息'
     
    }).then((res) => {
        console.log(res.userInfo.avatarUrl,res.userInfo.nickName)
        // 将内容赋值给全局的userInfo,这样可以在别的页面中使用
        app.globalData.userInfo = res.userInfo
        this.setData({
          userInfo:res.userInfo
        })
        // 判断yuyue-user数据库中是否存在原用户,不存在则添加到数据库中,存在则替换
        wx.cloud.database().collection('yuyue-user').where({
          _openid:app.globalData.openid
        }).get().then(result=>{
          console.log(result)
          if(result.data.length === 0){
            // 添加到数据库用户列表中 yuyue-user
            wx.cloud.database().collection('yuyue-user').add({
              data:{
                // 添加一个号码,由于id和openid太长,此号码可作为唯一标识
                num: Date.now(),
                // 添加用户昵称和头像
                nickName:res.userInfo.nickName,
                avatarUrl:res.userInfo.avatarUrl
              
              }
            }).then(res=>{
                console.log(res)
                // 添加成功提示
                wx.showToast({
                  title: '登录成功!'
                })
               }).catch(err=>{
                console.log(err)
              })
            }else{
              this.setData({
               userInfo:result.data[0]
              })
            }
        })
        
       
      } )
  }

5.退出登录

// 退出登录
  exitUser(){
    // 全局和页面上的用户信息为空
    app.globalData.userInfo = null
    this.setData({
      userInfo: null
    })
  }

6.实现自动登陆,用户不用退出小程序后再次登录

根目录app.js中:

// app.js
App({
  onLaunch() {
    wx.cloud.init({
      env: 'manmanmanman123-2gld2mewb02c0fcb'  //云开发环境id
    })
    // 获取用户的openid
    wx.cloud.callFunction({
      name:'login'
    }).then(res=>{
      console.log(res)
      console.log(res.result.openid)
      this.globalData.openid = res.result.openid
      // 刚开始启动小程序时,通过openid来查找yuyue-user用户数据库中是否存在用户
      //有的话就不用再登陆
      wx.cloud.database().collection('yuyue-user').where({
        _openid : res.result.openid
      }).get().then(result=>{
        console.log(result)
        this.globalData.userInfo = result.data[0]
      })
    })
  },
  globalData: {
    userInfo: null,
    openid:''
  }
})

在登录界面:文章来源地址https://www.toymoban.com/news/detail-482859.html

onShow() {
    // 获取到全局的userInfo
    this.setData({
      userInfo:app.globalData.userInfo
    })
  }

到了这里,关于微信小程序实现授权登录及退出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 - 实现手机号登录--授权并获取手机号保存至本地

    微信官方文档 | 获取手机号 这是服务端的  这是我们前端获取手机号需要给接口传递的两个参数    注意: 参数一: 获取access_token需要用到小程序密钥,这个需要从 服务端获取 ,也就是需要请求后端接口获取access_token,千万不要将小程序密钥写在前端代码中, 必须 要从服

    2024年02月03日
    浏览(59)
  • 【微信小程序】如何获取用户手机号授权登录

    目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体),也就是说只针对企业认证小程序开放。若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。 在使用该接口时,用户可使用微信绑定手机号进行授权,也添加

    2024年02月16日
    浏览(70)
  • 微信小程序:授权登录获取手机号及获取基本信息等

    微信文档 1)需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,通过 getphonenumber 事件获取回调信息; 2)将 getphonenumber 事件回调中的动态令牌code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机

    2024年02月06日
    浏览(54)
  • 微信小程序中如何获取用户手机号授权登录

    随着微信小程序的普及,许多应用程序需要用户登录才能提供更好的服务。而获取用户手机号码是验证用户身份和确保账户安全的重要步骤之一。因此,在本文中,我们将介绍如何在微信小程序中实现手机号授权登录。 首先,在小程序后台开发设置中勾选“获取手机号”选项

    2024年02月11日
    浏览(101)
  • uniapp微信小程序授权登录并获取手机号

    新版:前端要授权两次,一次获取用户信息授权码code,另外一次获取用户手机授权码code,全部传给后端。后端通过用户信息授权码获取openid,通过手机授权码获取手机号码。老版:前端传给后端授权码code和用户手机授权回调 里的iv和encryptedData给后端,后端通过code获取ope

    2024年02月11日
    浏览(97)
  • 微信小程序:登录授权,根据手机号获取凭证,获取用户手机号

    1.微信小程序授权 controller 层代码 wxUtils 工具类 2.微信小程序,用户手机号获取 微信小程序,根据code(code为手机号获取凭证)获取用户加密手机号 获取用户手机号方法

    2024年02月14日
    浏览(62)
  • 微信小程序授权登录(含获取基本信息及绑定的手机号)

    1、授权获取微信个人信息 2、调用 wx.login() 获取临时登录凭证code 3、用code调用接口换取用户唯一标识openId、用户在微信开放平台账号下的唯一标识unionId和会话密钥session_key (1)前端获取 注意点 :正常开发中不会通过这种方法获取,会通过后台获取调用微信公众平台接口获

    2024年02月09日
    浏览(50)
  • .NET6使用微信小程序授权登录,获取手机号

    1.在appsettings配置你的小程序配置信息 2.请求接口时先获取Access_token 3.授权时获取手机号 4.微信接口要求必须使用Post请求方法 //小程序官方文档 https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html

    2024年02月13日
    浏览(49)
  • 【微信授权登录】uniapp开发小程序,实现获取微信授权登录功能

    微信授权登录(获取用户信息) 1.先获取用户信息——用户授权允许后,通过调用uni.login 可以获取到code。 2.拿着获取到的code去调用——登录接口,可以获取到token。 3.把token存入缓存。就可以在页面判断是否登录了。 第一种方式: 第二种方式:

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包