经过一段时间对微信小程序的研发后 总结出以下三种授权登录的方式,我给他们命名为‘一次性授权’‘永久授权’‘不授权’
1.一次性授权
常规写法,需要获取用户公开信息(头像,昵称等)时,判断调取授权登录接口,但是此方法如果不经处理的话 用户如果拒绝授权或者删除该微信小程序后 需要重新调取并获取用户公开信息(头像,昵称等),此方法用户体验较差,不建议使用;
2.永久授权
在不必要使用用户公开信息(头像,昵称等)时,不调取授权登录接口,只有在必要的时候再去判断调取授权登录接口并把获取到的用户公开信息存入数据库,这样在每次登录时直接先运行指定函数从数据库索取需要的用户公开信息(头像,昵称等)即可,此方法在删除小程序后不用再次去授权登录(因为在用户第一次授权登录时已经把用户的公开信息存入数据库了以后直接向数据库索取即可),建议使用;
3.不授权
不需要授权登录获取用户公开信息(头像,昵称等),使用wx.login获取用户code并传入后台,后台可以通过用户的code值向微信要一个值(具体需要问后台,我只是个小前端,后台的东西不是很懂,只是知道一些逻辑而且也已经成功实现)然后通过这个用code换取的值就可以识别到指定用户,如果需要的话,前端要显示的头像、昵称等这些信息可以使用自定义可编辑的功能,当然,也可以通过<open-data type=“userAvatarUrl”></open-data><open-data type=“userNickName”></open-data>小程序提供的这个组件显示用户的头像及昵称(不过这个组件只有显示功能),用户如果想直接使用自己的头像昵称,也可以自行授权(比如添加个引导按钮什么之类的),建议使用;
文中使用的微信自带接口、组件及函数:
<open-data type=“userAvatarUrl”></open-data>
<open-data type=“userNickName”></open-data>
wx.login({
success(res){
console.log(res.code)
}
})
微信授权登录
以上三种方式可以灵活运用,也可以把需要的结合到一起,并不冲突;
当然,大佬很多,我也只是个小前端而已,第一次发表技术方面的帖子,希望互相学习,互相指导,如有说的不对的地方还望大佬们及时指出!!! 谢谢
楼主有空可以看看拼多多小程序的授权登录机制,是不是你文中说的第二种永久授权,只有第一次使用拼多多小程序登录时,会弹出授权框,之后进入小程序都会自动登录,用户名和头像都是微信的用户名和头像,即使把小程序删除,重新搜索小程序进入,仍然会自动登录
我们方案是通过用户授权后拿到头像昵称,以及通过code解析的出来unionId,且通过getPhoneNumber与手机号绑定,下次进来如果用户未登录,头像昵称授权即可拿到用户token信息等。
其实在用户第一次授权的同时 把用户头像昵称还有获取到的手机号之类的信息直接存放到服务器就好了 下次用户进来的时候 直接传过去code 后台通过这个code去判断是否为新用户(即已授权过的用户) 如果是的话 直接把该用户信息返回即可 如果不是新用户(即已授权过的用户)那么再看看什么时候让用户授权 加个判断 就不用每次都授权了
我们现在就使用这种方式
可以 很完美 哈哈哈
都是这样的啊。
难道用户的头像 昵称不会变?
那也就是说,如果前端只调用 wx.login 获取code ,然后把code给后台(之后就是后台的事了),这样前端没有任何授权弹窗,微信审核也是认可的。对吗?
厉害
请问一下第二种方式,如果以后都不用这个小程序了是后台管理员从数据库中删除相关信息吗?有没有可以用户自己删除的?
大佬,想问一下微信小程序除了使用微信登陆还有没有其他登陆方式,比如FaceBook?
通过code能获取到用户信息?
有点扯吧? 通过code就只能获取到session_key和openid. 同主体下关注过或授权过其他应用的可能会多个unionid
第二种方法,永久授权存入数据库中,用户卸载小程序重新登录时 如何知道是和数据库保存的用户是同一个人呢
授权之后怎么取消授权
用户头像 昵称实时获取 你要怎么处理