2017-01-14 57 views
5

我使用Laravel 5.3作爲移動應用連接到的REST服務器。我已經爲大多數Laravel錯誤定製了異常處理程序,並且按照我喜歡的方式工作。如何在Laravel 5.3中修改Passport OAuth中的錯誤消息?

但是,OAuth錯誤又回來了。例如:

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

很顯然,我不是用下劃線錯誤代碼困擾的只有一個 - 我只有beta測試了一把,他們已經報道這是一個「錯誤」。

護照似乎繞過了常規錯誤處理程序,而是通過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是你的真理之源和向用戶報告,當你的應用程序簡單地說這些基地的消息。希望能幫助到你!

相關問題