整改参考官方文档:
小程序对用户隐私收集方面的审核愈加严格,我们的小程序违规了两次,有被封禁手机号授权能力的风险。给的整改时间也不多,紧急处理,记录一下处理过程。
违规原因: 小程序存在违规收集手机号问题,包括但不限于"一进入就 收集手机号"、"非必要场景收集手机号"、"利益诱导收 集手机号"、"手机号登录页面无显著拒绝"等,请参考整 改指引对上述内容全面排查整改。
第一次处罚:封禁被搜索能力
第二次处罚:封禁手机号授权能力
技术栈: taro + vuex
整改行动项:
- 根据 关于小程序收集用户手机号行为的规范中小程序属于企业等内部职工使用的答疑,在登录页增加小程序使用范围及面向用户的说明。
- 开放部分菜单,包括
首页和我的。其他菜单点击toast提示请先登录。 - 首页模块级功能点击toast提示
请先登录。首页下方新增悬浮框,展示友好登录提示。 我的页面退出登录按钮改为请先登录,点击跳转登录页。- 登录拒绝提示更明确。
思路就是登录尽量滞后,放开能放开的页面,告诉用户这个小程序是干啥的。说明手机号收集是场景需要。
技术实现
首先需要根据登录状态判断是否直接请求首页数据接口,该项目技术栈使用了taro + vuex,同时对token做了常规持久化。vuex没有使用持久化插件,状态会随着小程序的销毁而消失。所以这里使用getStorageSync获取到token判断。
需要在view层根据登录状态判断是否展示友好登录提示,这里存为ref以便于view层使用。
const token = ref("");
useDidShow(() => {
token.value = Taro.getStorageSync("token");
token.value && 请求接口;
});
在需要有点击toast提示请先登录的位置再使用同样的逻辑判断即可。
API
未登录情况下的API有两种情况:
- 该API不需要鉴权也要正常请求
- 该API需要鉴权,未登录情况下不可以请求
在视图层去做拦截,长期来看不够优雅。
时间关系,API侧暂不需要进行任何处理。
TODO
- 以上两种情况的API应该收束到配置中,在API层去做拦截,留出配置项给view层即可。
- checkToken可以请求接口获取token是否有效的结果,现在这种方式不适用于token过期时,会突然跳转到登录页,用户体验不够丝滑。