app.js如果没有授权的话调用wx.getUserInfo是会回调到fail里的, 然后 onLaunch里 this.globalData.session_key = res.data.data; 这里能拿到this么..我有点记不清楚了,印象中异步操作后往往会拿不到this
为什么发getUserInfo不在首页不起作用我分享给别人一个小程序连接,别人点击手机上分享的连接后,没有调取小程序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 } })
2018-06-28