记录微信小程序的授权登录

用wx.getSetting方法判断用户是否登录

//判断用户是否授权
    //判断用户是否授权
    wx.getSetting({
     success:res => {
       if(res.authSetting["scope.userInfo"]) {
         wx.getUserInfo({
          success:(res) => {

          }
         })
       }else {
         this.setData({
           modelShow:true
         })
       }
     }
    })

如果没有登录在authSetting下面则不会有scope.userInfo的信息,其他相关信息则查看小程序指南中的开放能力,如果没有则弹出自己登录授权按钮
在这里插入图片描述
在这里插入图片描述
2.在这里使用button组件的开发能力

 <button class="login" open-type="getUserInfo" bindgetuserinfo="getUserInfo">登录授权</button>

点击会出现如下弹窗
在这里插入图片描述

   getUserInfo(event){
         let userInfo =event.detail.userInfo
         console.log(event)
         //说明已经授权了
         if(userInfo){
            this.setData({
              modelShow:false
            })
            this.triggerEvent('loginsuceess',userInfo)
         }else{
           this.triggerEvent("loginfail")
         }
    }

输出event查看,可以看到自己用户名称和地址等信息
在这里插入图片描述
通过triggerEvent的方式,触发回父组件

  <!-- 这是底部的部分 -->
  <x-login modelShow="{{modelShow}}" bind:loginsuceess="loginsuceess"  bind:loginfail="loginfail">
        
  </x-login>

在父组件中,判断是否授权登录给出其对应的操作,并且可以跳转到自己想跳转的页面,并把用户信息传递过去


```javascript
  loginsuceess(event){
    let detail =event.detail
    wx.navigateTo({
      url: `../blog-edit/blog-edit?avatarUrl=${detail.avatarUrl}&&nickName=${detail.nickName}`,
    })
  },
  loginfail(){
      wx.showModal({
        title:'只有授权才能发布'
      })
  },
最后完善,在已经授权的情况下的点击跳转功能

```javascript
 //这是获得用户的授权信息
     wx.getSetting({
      success:res=>{
        if(res.authSetting["scope.userInfo"]){
          wx.getUserInfo({
            success: (res) => {
              this.loginsuceess({
                detail:res.userInfo
              })
            },
          })
        }else{
          this.setData({
            modelShow:true
          })
        }
      }
     })

注释:在小程序中this要写在箭头函数里面,要不然会因为函数作用域的问题导致this找不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值