1.背景
最近负责了一个微信小程序项目,在微信小程序的登录和授权上遇到了一些问题。项目结束后把遇到的问题整理了一下,希望能对大家有所帮助~
2.目录
- 对于服务范围开放的小程序,要有游客模式;
- 登录时需要提供可取消或拒绝登录选项;
- 获取手机号和获取微信账号信息的接口分开获取;
- 默认头像昵称&自定义头像昵称的处理;
- 关于播放视频;
2.1 对于服务范围开放的小程序,要有游客模式
关于游客模式,官方的说法是为了给用户提供更好的使用体验,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。
因此在小程序中上架审核时,多数情况下需要具有游客模式才能审核通过。
这里需要注意的是官方提出的是“对于服务范围开放”的小程序需要有游客模式。
如果你们的小程序是内部使用的,未完全开放用户注册,或者是需要通过更多方式完成身份验证后才能提供服务的小程序,是可以直接引导用户进行账号登录的,例如学校系统、内部员工系统或其他非完全开放的系统。
所以产品同学在设计开放用户注册类型的小程序时,需要确定好哪些页面是游客可以访问的,哪些页面(功能)是必须登录后才能访问(使用)的哦。如果一开始没有确定好,后期再修改的话可能要面对开发同学们的怒吼了。
2.2 登录时需要提供可取消或拒绝登录选项
在小程序的登录页面,需要提供可取消或者拒绝登录的按钮。如下图示:
如果在登录页面没有取消按钮或者拒绝登录的按钮,提交审核的时候很有可能审核失败。
2.3 获取手机号和获取微信账号信息的接口分开获取
微信官方为了用户隐私安全,在微信小程序中获取用户绑定手机号和获取微信账号信息的接口是分开获取的。意味着如果需要获取用户的手机号、头像和微信昵称,需要调用2个接口去分别获取相关信息。
微信小程序中获取授权信息的接口需要通过按钮来触发,且每个按钮触发1次只能调用1个授权接口。所以如何优雅的获取用户的手机号和微信信息就是一个值得思考的问题。因为大部分小程序都是使用手机号码登录,所以我们需要考虑的问题其实是在哪一步获取微信授权信息。
这里可以看一下美团小程序的逻辑:
美团小程序需要先获取手机号码进行登录,登录后直接跳转至授权信息页让用户进行授权。在授权页面用户只有左上角的返回按钮和授权按钮,如果用户不点击授权则无法成功登录。
团队内部沟通过之后觉得类似这种授权方式过于强硬,用户体验不太好。经过沟通后决定使用另外一种解决方案:
1. 用户通过手机号码登录后,小程序跳转至登录前的页面。不通过页面的形式强制用户授权微信信息。
2. 每次当用户访问个人中心页面时,前端判断用户是否已授权微信信息,若没有授权则通过弹窗的形式提醒用户“当前未获取微信授权信息,是否获取?”
3. 若用户点击“确定”则调用微信授权接口来获取微信用户信息。若用户点击“取消”则关闭弹窗,用户能够继续进行其他的正常操作。
备注:因为我们用的是微信小程序提供的tabbar,所以主菜单上面的按钮不能增加触发事件,只能在用户访问个人中心页面时通过前端页面进行判断。
2.4 默认头像昵称&自定义头像昵称的处理
当用户通过手机号码登录后系统会给用户一个默认的昵称和头像。登录后用户可以对昵称和头像进行自定义修改。(一般默认昵称采用“用户_XXXX”的形式,默认头像都是一样的。)
当用户授权获取微信信息时我们会拿到用户的微信头像和昵称,这个时候需要判断下是否要替换用户现有的头像和昵称。此时对于用户修改过的部分是不能替换的,只能替换默认头像或默认昵称。为了区别用户自定义头像和昵称,采用了以下方案:
1. 设置Name1和Name2两个字段记录用户的默认昵称。在小程序端展示的昵称为Name2。
2. 若Name2与Name1字段相同,则表示用户尚未手动修改过昵称,直接替换即可。
3. 若Name2与Name1字段内容不同,说明用户手动修改过昵称,则继续使用Name2字段内容作为用户的昵称,不再替换微信昵称。
微信头像也是同理。当用户头像为空时,默认使用系统默认头像。在获取微信信息后,需要判断用户头像是否为空:若用户头像为空,则将用户头像替换为微信头像。若用户头像非空,则不再进行替换。
2.5 关于播放视频
小程序如果需要播放视频的话,需要添加类目“文娱-视频”才能成功通过审核。
需要注意的是添加文娱类目需要有相关的资质证明,如果没有添加对应类目,在审核的时候有可能不能通过哦~
Ps.如果你的小程序能够上传视频,但是没有添加对应的类目,建议在提交审核的时候删除掉所有的视频内容~
3.结尾
以上就是这次在做微信小程序项目中登录和授权部分遇到了问题了,如果有遗漏或者不准确的地方希望大家能够不吝指教~