我的授权登录步骤:
1、 wx.login + code2Session 获取用户 UnionID,获取到UnionID直接登录,获取不到UnionID,跳转授权页提醒用户授权
2、授权页使用 wx.getUserInfo 获取用户 UnionID,并且存入数据库,
问题:
同事的新账号(未关注公众号),授权成功后,注册成功新用户,清除后台应用(微信,删除小程序和不删除小程序都做了),再次搜索小程序,打开后仍然提示授权页,确定授权,提示 用户已经被注册了;
测试:
我删除我的数据库数据,微信删除小程序,再搜索打开小程序,授权注册用户,清除后台应用,再搜索打开小程序,直接进入,无需授权(也测试了取消关注公众号,同样可以正常进入),唯一的区别就是我 关注过了公众号,同事没有关注过;
求解:
wx.getUserInfo目前必须需要点击才有效, 使用 wx.login + code2Session 无法获取到UnionID,就无法确认用户信息,难道 未关注过公账号的用户,必须每次都提醒授权吗? 有了就登录没有就注册吗? 这样多烦人啊, 求大神指点思路
wx.login的code可以获取openId,这个openId和wx.getUserInfo可获取的openId是一样的,因此可以通过wx.login的openId去查对应的unionId(在自己的数据库中做关联)
wx.login + code2Session 的做法是,必须关注公众号,未关注的获取不到 unionId,只有session_key 和 openid
是的,你不需要获取unionId,只需要通过这个openId去匹配getUserInfo获取的openId + unionId。这个匹配是你自己的数据库和后端逻辑完成的。
可以通用unionid和openid来登录啊,然后后端去匹配用户数据库。
你登录时的 unionid,怎么获取到的?
和你的一样,如果限制只能用unonid来登录的话就会出现你说的问题。你可以提示用户尚未登录,点击登录。
我们APP存得时候用的这个值,小程序是个简易版的APP,所以也必须用unonid,现在暂时改成每次都提醒授权了。
58租房精选 也是要每次登录权限的,
想把 unonid 存到 storage中 ,直接来了就登录,又怕不安全
所以支持openid和unionid两种方式登录呀,通过openid到数据库中找unionid,有就是已经注册的用户,没有就是新用户提示授权