我分享给别人一个小程序连接,别人点击手机上分享的连接后,没有调取小程序app.js中的 wx.getUserInfo方法。请问如何能调取到?或者提供一个改进方案。
我在点击连接的页面写的代码是,<view class='login_desc'>为了给您更好的服务请先登录</view>
<button class='main_btn login_btn' open-type="getUserInfo"bindgetuserinfo="ongetuserinfo">登录</button>
app.js代码是
const { request} = require('./utils/request.js')
const { login, getUserInfo} = require('./utils/address.js')
App({
onLaunch: function (options) {
// 设备信息
wx.getSystemInfo({
success: function (res) {
console.log(res)
}
})
// 场景值
// console.log(options.scene)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
const code = res.code;
// 请求参数
const url = login;
const data = {
code:code
};
const method = 'GET';
// 获取 openid and session_key
request(url, data, method, res=>{
// 保存全局
this.globalData.session_key = res.data.data;
// 调用userInfo
this.getUserInfo(res.data.data);
});
}
})
},
getUserInfo(session_id){
// 获取用户信息
console.log(session_id)
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 这里不能使用util里面的方法,导致了循环引用
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
console.log(this.globalData.userInfo)
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
// 由于愚蠢的错误
const { nickName, gender, avatarUrl, city, country, language, province } = res.userInfo;
console.log(session_id)
console.log(gender)
console.log(avatarUrl)
console.log(nickName)
console.log(getUserInfo)
request(getUserInfo, {
sessionId: session_id,
gender: gender,
headImg: avatarUrl,
nickname: nickName,
}, 'POST', res => {
// 获取成功
console.log(`后台返回用户信息${JSON.stringify(res)}`);
});
}
})
}
}
})
},
globalData: {
userInfo: null
}
})
wx.getUserInfo 不是不能用了? 开发版和体验版 都没用了
app.js如果没有授权的话调用wx.getUserInfo是会回调到fail里的,
然后 onLaunch里 this.globalData.session_key = res.data.data; 这里能拿到this么..我有点记不清楚了,印象中异步操作后往往会拿不到this