Laravel Passport & 微信小程序的登录态维护 (二)

发布时间: 2017-10-25 14:34:38 作者: 大象笔记

小程序上线之后,报警邮件一直报错。但是用户并没有反馈无法使用。说明是几个不重要的接口在未登录的情况下报错了,而且只有新用户会遇到

The resource owner or authorization server denied the request. {"exception":"[object] (League\\OAuth2\\Server\\Exception\\OAuthServerException(code: 9): The resource own
er or authorization server denied the request. at /home/zhongwei/work/sd-sea-travel/vendor/league/oauth2-server/src/Exception/OAuthServerException.php:168)

首页无法测试。由用户个人中心测试,主要测试 app.js 中的 onLaunch - login 是否能在用户第一次打开的是非 index 页也能够被调用。先将 app.json 中的用户中心页面放到第一的位置,取代 index.

果然效果很明显

三个接口被同时调用,所以结果是

再次刷新页面就没问题了。

如何解决第一次访问报错的问题

这个问题必须解决,原因是,用户可能通过其他人分享的商品详情页进入小程序。

而详情页包含了分销关系记录的逻辑,这些接口都是登录之后才能调用的。

微信小程序的 wx.request 奇葩之处

状态码 401 被归类在 success 之内。

access_token 失效的处理

例如,后台清理了所有 access_token, 或者 access_token 失效,同样会报 401 错误。

合理的做法是,在每个 api 调用失败时(status code 为 401),调用一次 401。

但是这个做法太麻烦,目前也没有想到更简单的做法。

我是一名山东烟台的开发者,联系作者