laravel - 如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?

标签 laravel oauth laravel-5.3 laravel-passport

我将 Laravel 5.3 用于移动应用程序连接到的 REST 服务器。我已经为大多数 Laravel 错误定制了异常处理程序,这就是我喜欢的方式。

然而,OAuth 错误又回来了。例子:

{
    "error":"invalid_credentials",
    "message":"The user credentials were incorrect."
}

显然,我不是唯一一个被带下划线的错误代码困扰的人——我只有少数 beta 测试人员,他们已经将此报告为“错误”。

Passport 似乎绕过了常规的错误处理程序并通过了 League\OAuth2\Server\Exception\OAuthServerException反而。这些丑陋的错误消息被硬编码到该文件中。
public static function invalidCredentials()
{
    return new static('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
}

我已经认真尝试了十几种扩展/覆盖 OAuthServerException 的方法,但我似乎无法让它工作。

最佳答案

要修改来自 Passport 的错误消息,一种方法是扩展 Passport 基类以及您尝试过的类似 OAuthException 方法。 Here's a reasonable explanation of how to do this.我试图为类似的东西做这件事,但在我的情况下发现它是矫枉过正的,并追求更简单的东西。

但是,如果问题是您如何在移动应用程序中显示错误,那么一种方法可能是将这些错误映射到更理想的位置,而不是直接使用它们向用户报告(以下是伪代码,因为我不确定)您的移动应用程序的编码内容):

function handleErrorResponse(response) {
    var errorMap = {
        "invalid_credentials": "Username or password was incorrect." 
    };

    return errorMap[response.error];
}

通过这种方式,League\OAuth2\Server 是您的真实来源,您的应用程序在向用户报告时只需翻译这些基本消息。希望能帮助到你!

关于laravel - 如何在 Laravel 5.3 中修改来自 Passport OAuth 的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656116/

相关文章:

php - 来自数据库的 LARAVEL 输入值

node.js - NPM 安装错误 (Laravel)

php - Laravel Eloquent 后处理查询

rest - Keycloak 返回未经授权的 401

Facebook OAuth 重定向到 IP 地址

php - View 中的 Laravel undefined variable

php - 显示验证消息 Laravel 5.4

php - 处理通过 Laravel 中的连接获取的重复行

laravel - 使用laravel 5.3通行证从Android应用程序登录API

javascript - 在 javascript 中使用 OAuth 连接 Github