收藏
回答

现在不调用 wx.getUserInfo接口如何获取unionid

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 需求 wx.getUserInfo 微信iOS客户端 6.6.6 2.0.7

之前是通过将 wx.login  wx.getUserInfo 绑定使用解密获取用户unionid,现在怎么获取用户的unionid呢?


看了下最新的文档,现在是满足下面条件wx.login是会直接返回unionid的,如果不满足要怎么获取呢?

1.在微信开放平台下存在同主体的App、公众号、小程序。

2.用户关注了某个相同主体公众号,或曾经在某个相同主体App、公众号上进行过微信登录授权。



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

8 个回答

  • 攻城狮
    攻城狮
    2018-05-19


    2018-05-19
    有用 9
    回复
  • 许志平
    许志平
    2018-05-20

    用户体现太差了,用户一进来等于要询问两次他授权登录

    2018-05-20
    有用 2
    回复
  • 2018-05-18

    现在必须用按钮触发授权,不然拿不到用户信息,在第一次需要获取用户信息的时候加个事件触发,让用户操作授权。

    2018-05-18
    有用 1
    回复
  • 刘小胖
    刘小胖
    2018-05-17

    已解决,不知道靠不靠谱贴上代码。 button 组件授权后在调用wx.login 进行解密

    userInfoHandler: function (e) {

    let that = this;

    if (e.detail.errMsg =='getUserInfo:ok') {

    wx.login({

    success: function (r) {

    let code = r.code;

    if (code) {

    // 解密用户数据

    wx.request({

    url: url,

    method: 'post',

    header: {'content-type': 'application/x-www-form-urlencoded'},

    data: {encryptedData: e.detail.encryptedData, iv: e.detail.iv, code: code},

    success: function (data) {

    console.log(data);

    if (data.data.status == 1) {

    app.globalData.userInfo = data.data.userInfo;

    wx.setStorageSync('userInfo', data.data.userInfo); // 缓存用户信息

    typeof cb == "function" && cb(app.globalData.userInfo);

    app.navigateBack('navigateTo', '/pages/index/index');

    } else {

    // 失败

    that.showMsg(data.data.msg);

    }

    },

    fail: function (err) {

    that.showMsg(err.errMsg);

    console.log(err)

    }

    })

    } else {

    that.showMsg(err.errMsg);

    console.log('获取用户登录态失败!', err)

    }

    },

    fail: function (err) {

    that.showMsg(err.errMsg);

    console.log('登陆失败', err);

    }

    })

    }

    }


    2018-05-17
    有用 1
    回复 6
    • 2018-05-18
      他用button组件 用户点击授权了,当然能拿啊。。。 他的问题是不授权怎么拿
      2018-05-18
      回复
    • 2018-05-18回复
      我记得以前有个bug,code要在getuserinfo之前获取的,不知道你这样写可不可以?
      2018-05-18
      1
      回复
    • 刘小胖
      刘小胖
      2018-05-18回复
      这个是我问的,也是我自己回答的,不授权拿unionid条件太多,只能授权后在拿。之所以问这个是因为官方发布了这个公告 https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=981858576&docid=000aee01f98fc0cbd4b6ce43b56c01。后来把登录方式改成botton登录了。
      2018-05-18
      回复
    • 柳嘉仕
      柳嘉仕
      2018-05-18回复
      不授权就拿用户信息不是长久之计,早晚会被发现封调,还是改吧😂
      2018-05-18
      回复
    • 2018-05-19
      https://developers.weixin.qq.com/miniprogram/dev/component/button.html getUserInfo回调后再wx.login会刷新sessionkey,新的sessionkey是解密不出由旧sessionkey加密的信息的,需要保证wx.login在getUserinfo之前触发,可以这样:先用wx.checkSession检查sk,若sk失效,则login->getUserInfo,否则直接getUserInfo
      2018-05-19
      回复
    查看更多(1)
  • 没有纯真模样
    没有纯真模样
    2018-05-19


    2018-05-19
    有用
    回复
  • 柳嘉仕
    柳嘉仕
    2018-05-18

    在个人界面增加一个授权按钮

    2018-05-18
    有用
    回复
  • 小柜子叔叔
    小柜子叔叔
    2018-05-18

    发现微信乱七八糟的,这个解密,然后看文档说不推荐用这个 encryptedData了 

    用这个 有时候解密不出来,有时候解密出来 的数据 unionid的字段名称有时候叫  unionid 有时候叫  unionId

    微信这块设计 太low

    2018-05-18
    有用
    回复 1
    • 刘小胖
      刘小胖
      2018-05-18
      “用这个 有时候解密不出来,有时候解密出来 的数据 unionid的字段名称有时候叫 unionid 有时候叫 unionId ”,请问这个是你实际使用中出现的么?
      2018-05-18
      回复
  • 晴天
    晴天
    2018-05-18

    我们都好多天

    2018-05-18
    有用
    回复
登录 后发表内容