您现在的位置: 微信小程序 > 微信小程序开发 > 教程 >

为什么发getUserInfo不在首页不起作用

来源:微信小程序 编辑:Yiyongtong.com 发布时间:2018-06-28 15:33热度:
我分享给别人一个小程序连接,别人点击手机上分享的连接后,没有调取小程序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
    }
})