2017-01-14 10 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 \ Serverは真実のあなたの源であり、ユーザーに報告する際にアプリは、単にそれらのベースのメッセージを変換します。それが役に立てば幸い!

関連する問題