- 确认是否缺少 refresh_token。在使用 OAuth2 时,access_token 是有有效期的,需要定时刷新。如果使用的是 refresh token 方式,则需要在获取 access_token 时同时获取 refresh_token 用于刷新 access_token。如果没有获取到 refresh_token,就无法在 access_token 过期时刷新 access_token,导致无法进行访问。
- 确认是否正确使用了 access_token。在使用 access_token 进行访问时,需要在请求头中加入 Authorization 字段,值为 Bearer + access_token。如果 Authorization 字段没有使用正确的格式,也会导致出现该错误。
- 确认是否正确配置了 Kong API 网关。Kong API 网关需要正确配置 OAuth2 插件才能支持 OAuth2 认证。配置时需要设置正确的 redirect_uri、client_id、client_secret 等参数。
- 确认是否正确配置了服务端。如果服务端需要进行 OAuth2 认证,需要正确配置 OAuth2 鉴权,包括设置正确的 client_id、client_secret 等参数。
- 确认是否正确处理了错误请求。如果请求参数或者请求头不符合要求,服务端会返回错误信息,需要正确处理错误信息。代码示例:
try {
// 发送请求
} catch (error) {
if (error.response && error.response.status === 401) {
// refresh token 失效,需要重新获取 access_token
const { access_token, refresh_token } = await getAccessToken();
// 更新 access_token
setAccessToken(access_token);
setRefreshToken(refresh_token);
// 重新发送请求
// ...
} else {
// 其他错误
// ...
}
}
在代码中处理错误请求时,可以根据返回的错误状态码来判断是否需要重新获取 access_token,并且在获取 access_token 后更新本地保存的 access_token 和 refresh_token。重新获取后再次发送请求即可。