2017-01-14 2 views
5

모바일 앱이 연결되는 REST 서버에 Laravel 5.3을 사용하고 있습니다. 나는 대부분의 Laravel 오류에 대한 예외 처리기를 이미 사용자 정의했으며 이것이 내가 원하는 방식으로 작동하고있다.Laravel 5.3의 Passport OAuth에서 오류 메시지를 어떻게 수정합니까?

그러나 OAuth 오류는 다시 발생합니다. 예 : 분명히

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

, 내가 밑줄 오류 코드에 의해 방해하는 유일한 사람이 아니에요 - 난 단지 베타 테스터의 소수가 있고 그들은 이미으로이 보도 한 "버그."

Passport가 일반 오류 처리기를 우회하여 대신 League\OAuth2\Server\Exception\OAuthServerException을 통과하는 것으로 보입니다. 이 추악한 오류 메시지는 해당 파일에 하드 코딩되어 있습니다.

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

나는 심각하게 확장 할 수 십여 접근/재정 OAuthServerException 같은 시도했지만, 난 그냥 일을 할 수없는 것.

답변

0

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]; 
} 

이런 식으로 리그 \ OAuth2를 \ 서버 진리의 근원이며, 사용자에게보고 할 때 앱이 단순히 그 기본 메시지를 변환합니다. 희망이 도움이됩니다!