用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找不到