收藏
回答

关于openid再编译后获取问题

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows 1.02.1812271

在授权之后可以获取openid,但是再次编译之后openid显示未定义,但是userInfo可以正常获取

难道每次取openid 都要走一遍 获取流程?

目前我把openid保持在全局,其他页面可以正常获取

就是在写完代码 编译之后openid就获取不到

需要重新清理授权,再次授权才可以获取


我是把获取openid 写在了授权里面

index.wxml

<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>


index.js

getUserInfo: function(e) {

    if (e.detail.errMsg=="getUserInfo:ok")

    {

        console.log('授权成功')

        app.globalData.userInfo = e.detail.userInfo

        this.setData({

            userInfo: e.detail.userInfo,

            hasUserInfo: true

    })

    //获取code

    wx.login({

        success: function (res) {

        wx.request({

        url: 'https://api.weixin.qq.com/sns/jscode2session?appid=*******&secret=*******&js_code=' + res.code + '&grant_type=authorization_code',

        data: {},

        header: {'content-type': 'application/json'},

        //getOpenID

        success: function (res) {

            console.log(res.data.openid)

            console.log(res.data.session_key)

            //openid = res.data.openid //返回openid

            app.globalData.openid = res.data.openid

            app.globalData.sessionKey = res.data.session_key

}

})

}

})

}

}



回答关注问题邀请回答
收藏

3 个回答

  • จุ๊บ
    จุ๊บ
    2019-02-13

    你这样写再次编译 肯定未定义,因为没走这里面啊;可以直接调用wx.login 获取openid,不需要用户点击,获取之后存在缓存中就行了

    2019-02-13
    有用 1
    回复
  • 拾忆
    拾忆
    2019-02-13

    如果只是openid是不需要授权就能直接获取的,获取后可以放在缓存里

    2019-02-13
    有用 1
    回复
  • TiAmo
    TiAmo
    2020-04-05

    我也遇到这个问题了,始终解决不到,再次编译之后userInfo能打印,但是openid打印为undefined,可能是微信小程序不允许全局存储openid吧,我用的本地存储解决的,可以在success之后通过本地存储

    wx.setStorage({key: "openid", data: res.data.openid})将openid存储在本地,在其他界面通过

    wx.getStorage({key: 'openid',success(res) {let openid = res.data;console.log(openid);}})获取openid,这样再次编译之后还是能够获取到openid



    2020-04-05
    有用
    回复
登录 后发表内容