2017-01-14 1 views
5

Я использую Laravel 5.3 для сервера REST, к которому подключается мобильное приложение. Я уже настроил обработчик исключений для большинства ошибок Laravel и работает так, как мне нравится.Как изменить сообщения об ошибках из Passport OAuth в Laravel 5.3?

Однако ошибки OAuth возвращаются уродливыми. Пример:

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

Видимо, я не только один беспокоили код ошибки с подчеркиванием - У меня есть только несколько бета-тестеров, и они уже сообщили об этом как «ошибка».

Паспорт, кажется, обходит регулярный обработчик ошибок и проходит через League\OAuth2\Server\Exception\OAuthServerException. Эти уродливые сообщения об ошибках жестко закодированы в этот файл.

public static function invalidCredentials() 
{ 
    return new static('The user credentials were incorrect.', 6, 'invalid_credentials', 401); 
} 

Я серьезно пытался как десяток подходов к расширяющих/переназначения OAuthServerException, но я просто не могу заставить его работать.

ответ

0

Чтобы изменить сообщения об ошибках из Паспорта, одним из способов было бы расширить базовые классы 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]; 
} 

Таким образом, Лига \ OAuth2 \ Server является вашим источником истины и ваше приложение просто переводит эти базовые сообщения, сообщая пользователю. Надеюсь, поможет!