收藏
回答

getUserInfo获取的UnionID,无法用code2Session获取到

我的授权登录步骤:

1、 wx.login + code2Session 获取用户 UnionID,获取到UnionID直接登录,获取不到UnionID,跳转授权页提醒用户授权

2、授权页使用 wx.getUserInfo 获取用户 UnionID,并且存入数据库,


问题:

同事的新账号(未关注公众号),授权成功后,注册成功新用户,清除后台应用(微信,删除小程序和不删除小程序都做了),再次搜索小程序,打开后仍然提示授权页,确定授权,提示 用户已经被注册了;


测试:

我删除我的数据库数据,微信删除小程序,再搜索打开小程序,授权注册用户,清除后台应用,再搜索打开小程序,直接进入,无需授权(也测试了取消关注公众号,同样可以正常进入),唯一的区别就是我 关注过了公众号,同事没有关注过;


求解:

wx.getUserInfo目前必须需要点击才有效, 使用 wx.login + code2Session  无法获取到UnionID,就无法确认用户信息,难道 未关注过公账号的用户,必须每次都提醒授权吗?  有了就登录没有就注册吗? 这样多烦人啊, 求大神指点思路





最后一次编辑于  2018-12-10  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 微盟
    微盟
    2018-12-10

    wx.login的code可以获取openId,这个openId和wx.getUserInfo可获取的openId是一样的,因此可以通过wx.login的openId去查对应的unionId(在自己的数据库中做关联)

    2018-12-10
    赞同
    回复 2
    • 盖伦
      盖伦
      2018-12-10

      wx.login + code2Session 的做法是,必须关注公众号,未关注的获取不到 unionId,只有session_key 和 openid

      2018-12-10
      回复
    • 微盟
      微盟
      2018-12-11

      是的,你不需要获取unionId,只需要通过这个openId去匹配getUserInfo获取的openId + unionId。这个匹配是你自己的数据库和后端逻辑完成的。

      2018-12-11
      回复
  • xin
    xin
    2018-12-10

    可以通用unionid和openid来登录啊,然后后端去匹配用户数据库。

    2018-12-10
    赞同
    回复 4
    • 盖伦
      盖伦
      2018-12-10

      你登录时的 unionid,怎么获取到的?


      2018-12-10
      回复
    • xin
      xin
      2018-12-10回复盖伦

      和你的一样,如果限制只能用unonid来登录的话就会出现你说的问题。你可以提示用户尚未登录,点击登录。

      2018-12-10
      回复
    • 盖伦
      盖伦
      2018-12-10回复xin

      我们APP存得时候用的这个值,小程序是个简易版的APP,所以也必须用unonid,现在暂时改成每次都提醒授权了。

      58租房精选 也是要每次登录权限的,


      想把 unonid 存到 storage中 ,直接来了就登录,又怕不安全


      2018-12-10
      回复
    • xin
      xin
      2018-12-10回复盖伦

      所以支持openid和unionid两种方式登录呀,通过openid到数据库中找unionid,有就是已经注册的用户,没有就是新用户提示授权

      2018-12-10
      回复