微信小程序~App.js中获取用户信息
(1)代码:主要介绍下获取用户信息部分
onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 登录 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) } } }) } } })
onLaunch为小程序生命周期---小程序初始化
(2)获取用户数据
wx.getSetting({...})或者wx.openSetting({...})
开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权
参数:
obj.success 的成功回调函数参数:
wx.openSetting({
success:function(res){
}
})
或者
wx.openSetting({
success=>res{
}
})
AuthSetting
用户授权设置信息
scope | 对应接口 | 描述 |
---|---|---|
scope.userInfo | wx.getUserInfo | 用户信息 |
scope.userLocation | wx.getLocation, wx.chooseLocation | 地理位置 |
scope.address | wx.chooseAddress | 通讯地址 |
scope.invoiceTitle | wx.chooseInvoiceTitle | 发票抬头 |
scope.invoice | wx.chooseInvoice | 获取发票 |
scope.werun | wx.getWeRunData | 微信运动步数 |
scope.record | wx.startRecord | 录音功能 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 保存到相册 |
scope.camera | camera 组件 | 摄像头 |
代码:
// 获取用户信息 wx.openSetting({
/*接口调用成功的回调函数*/ success: res => {
/*success成功回调函数的参数:authorSetting对象*/
/*authSetting对象属性之一:scope.userInfo授权用户信息*/ if (res.authSetting['scope.userInfo']) { /*scope.userInfo(是否授权用户信息,对应接口 wx.getUserInfo)*/
wx.getUserInfo({ }) } } })
(3)获取用户信息
wx.getUserInfo(Object object)获取用户信息
参数:
object.success 回调函数的参数
// 获取用户信息 wx.openSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 必须是在用户已经授权的情况下调用 wx.getUserInfo({ success: res => { // globalData函数设置全局变量,方便其他页面调用。 this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } })
globalData函数设置全局变量,详见下篇文章使用globalData函数设置全局变量
.