jre*_*kes 5 oauth laravel laravel-5.3 laravel-passport
我正在使用Laravel 5.3作为移动应用程序连接的REST服务器.我已经为大多数Laravel错误定制了异常处理程序,并且按照我喜欢的方式工作.
但是,OAuth错误很难恢复.例:
{
"error":"invalid_credentials",
"message":"The user credentials were incorrect."
}
Run Code Online (Sandbox Code Playgroud)
显然,我不是唯一一个被带有下划线的错误代码所困扰的人 - 我只有少数beta测试者,他们已经将此报告为"bug".
Passport似乎绕过了常规错误处理程序League\OAuth2\Server\Exception\OAuthServerException而是通过了.这些丑陋的错误消息被硬编码到该文件中.
public static function invalidCredentials()
{
return new static('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
}
Run Code Online (Sandbox Code Playgroud)
我已经认真尝试了十几种扩展/覆盖OAuthServerException的方法,但我似乎无法使其工作.
要修改 Passport 中的错误消息,一种方法是扩展 Passport 基类以及类似的 OAuthException 方法,就像您尝试的那样。这是如何执行此操作的合理解释。我试图做类似的事情,但就我而言,发现它太过分了,所以选择了更简单的事情。
但是,如果问题是如何在移动应用程序中显示错误,一种方法可能是将这些错误映射到更理想的内容,而不是直接使用它们向用户报告(以下是伪代码,因为我不确定您的移动应用程序的编码是什么):
function handleErrorResponse(response) {
var errorMap = {
"invalid_credentials": "Username or password was incorrect."
};
return errorMap[response.error];
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,League\OAuth2\Server 就是您的事实来源,您的应用程序在向用户报告时只需翻译这些基本消息。希望能帮助到你!