設計思路
- 小程序獲取用戶信息第一步咱們先設計頁面樣式,而後書寫事件js,js須要實現的功能:核心就是點擊使用小程序官方api獲取用戶信息,而後在小程序頁面使用{{}}
index.wxml頁面
在這個界面採用了簡單的邏輯判斷語句,還有按鈕綁定事件
<view class="container">
<view class="userinfo">
<image wx:if="{{!hasUserInfo && canIUse}}" src="https://gss0.baidu.com/-4o3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=775a322c9945d688a357baa294f25126/91ef76c6a7efce1b29b133d5a451f3deb48f6513.jpg"class="userinfo-avatar"></image>
<view wx:if="{{!hasUserInfo && canIUse}}" class="geren">
<text>微信將獲取你的我的信息</text>
</view>
<text wx:if="{{!hasUserInfo && canIUse}}" class="userinfo-nickname">親愛的用戶,點擊獲取暱稱進行訪問</text>
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo" class="huoqu"> 獲取頭像暱稱 </button>
<block wx:else>
<image class="userinfo-avatar" src="https://gss0.baidu.com/-4o3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D600%2C800/sign=775a322c9945d688a357baa294f25126/91ef76c6a7efce1b29b133d5a451f3deb48f6513.jpg" mode="cover"></image>
<text class="userinfo-nickname">親愛的{{userInfo.nickName}},你最近已經進行了受權,能夠直接進行訪問</text>
<button class="huoqu" bindtap="bindViewTap" > 點擊訪問 </button>
</block>
</view>
</view>
index.wxss頁面
.geren{
color: blueviolet;
}
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}
.huoqu{
background-color: rgb(130, 231, 218);
}
.userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}
.userinfo-nickname {
color: #aaa;
width:400rpx;
}
index.js頁面
核心:這裏 bindViewTap()函數裏跳轉頁面, getUserInfo()獲取信息,結合了wxml裏按鈕裏的屬性bindgetuserinfo,用戶點擊該按鈕時,會返回獲取到的用戶信息,回調的detail數據與wx.getUserInfo返回的一致,open-type="getUserInfo"時有效
Page({
data: {
motto: 'Hello World',
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
//事件處理函數
bindViewTap: function() {
wx.switchTab({
url: '../home/home'
})
},
getUserInfo: function(e) {
console.log(e)
//這是在使用app.js裏的
app.globalData.userInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
})
app.js頁面
這是自定義的小程序界面原生的
App({
onLaunch: function () {
// 登陸
wx.login({
success: res => {
// 發送 res.code 到後臺換取 openId, sessionKey, unionId
}
})
// 獲取用戶信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已經受權,能夠直接調用 getUserInfo 獲取頭像暱稱,不會彈框
wx.getUserInfo({
success: res => {
// 能夠將 res 發送給後臺解碼出 unionId
this.globalData.userInfo = res.userInfo
// 因爲 getUserInfo 是網絡請求,可能會在 Page.onLoad 以後才返回
// 因此此處加入 callback 以防止這種狀況
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
globalData: {
userInfo: null
}
})
效果展現