小程序 统一登陆问题?

用uniapp做小程序,每个页面都有可能通过分享进入,每个页面调用业务接口前都先调用登陆接口,那每个页面都要调用一遍登陆逻辑,感觉比较麻烦;
目前的方法:

  1. 写公共的登陆方法(有一个判断是否登陆失效的接口,失效就调用重新登陆接口),有可能首次进入的页面都调用一遍,太麻烦了;
  2. 写一个登陆页面,失效都跳转到登陆页面进行登陆,登陆后再跳回页面((1)自动登陆:会有一段闪过空白,(2)用户点击手动登陆:体验不好);
  3. 在统一封装的请求里调登陆,当业务接口失效,就调用登陆接口,但是原来失效的接口的没办法再调用了;

有没有比较好的方法可以统一处理登陆问题?

阅读 333
2 个回答

有个办法,你直接在封装一个公共的request的方法,你所有接口请求都通过这个request方法,在请求拦截器里判断登录态,如果没登录就去登录页面就行了

  1. 在使用用户信息的时候统一处理,比如说写到store里面或者写一个通用的hook来调用,如果没有用户登录信息就拉起登录操作,再返回对应的用户信息。
  2. 分享的链接统一使用入口转发页的URL,进入之后展示loading效果并进行登录操作。登录完成之后按照URL上面携带的分享信息路由到对应的活动页面。
  3. 如果获取登录信息失败就返回到正常登陆页,让用户手动操作登录。登录成功后按照缓存的path信息跳转回活动页面。

用户如果已经使用过你们的小程序,可以通过 wx.login 静默获取用户的登录 code,后端可以根据这个code 请求微信接口获取到用户对应的 OpenID 完成登录操作。
当然最好是交给用户点按钮,这个点击可以有JS来控制弹出层,也可以是在对应的入口页增加登录按钮。后续的逻辑就还是开头提到的1和2。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进