我自己的写法,先把下面这段代码放在app.js里
// 授权方法
login(callback, userInfoRaw) {
var that = this
if (userInfoRaw.detail.errMsg == 'getUserInfo:ok') {
let userInfo = JSON.parse(userInfoRaw.detail.rawData)
wx.setStorageSync('user', userInfo)
wx.login({
success: function (res) {
that.globalData.code = res.code
wx.request({
//这是后台的接口地址,用来返回openid
url: that.data.ApiUrl+'get_userinfo',
data: {
iv: encodeURIComponent(userInfoRaw.detail.iv),
encryptedData: encodeURIComponent(userInfoRaw.detail.encryptedData),
userinfo: wx.getStorageSync('user'),
code: that.globalData.code,
},
header: {
'content-type': 'json'
},
success: function (res) {
wx.setStorageSync('openid', res.data.data.openid)
var openid = res.data.data.openid
callback(null, userInfo, openid)
}
})
}
})
//wx.request({}) // 将用户信息、匿名识别符发送给服务器,调用成功时执行 callback(null, res)
try {
wx.setStorageSync('user', userInfo)
}
catch (e) {
// 处理错误
}
// console.log(that.globalData.userInfo)
// callback(null, userInfo, that.globalData.code)
} else if (userInfoRaw.detail.errMsg == 'getUserInfo:fail auth deny') {
that.alert('需要授权才能获取您的信息')
callback('fail to modify scope', null)
}
}
然后就是见证奇迹的时刻了,在你需要授权的页面写上下面这段话
// 授权
login(userInfoRaw) {
var that = this
app.login((err, user, openid) => {
//这里面就可以得到openid了,你就可以自由的用它了,放到当前页面的data里都没有问题
}, userInfoRaw)
},
那就有人会问了,login(userInfoRaw)的参数从哪来呢,其实小程序有按钮是可以直接调获取用户信息的,把下面代码粘在想要授权的地方,就可以得到想要的效果了
<button class="shortButton" bindgetuserinfo='login' open-type='getUserInfo' >点击登录</button>
网友评论