как работать с Laravel Socialite Отсутствует исключение авторизации

В Laravel Socialite нас перенаправляют на facebook. Но когда пользователь отменяет (не разрешая facebook доступ к общедоступному профилю), он выдает ошибку Отсутствует исключение авторизации

ClientException в строке 107 RequestException.php: Ошибка клиента: GET https://graph.facebook.com/oauth/access_token?client_id=1309844325833234&client_secret=1304bbdd28400tret49a295d324d577c&redirect_uri=http%3Alocalback2FACE%3%8localface2Fface%2%3A%2Ffacebook привел к ответу 400 Bad Request: {"error": {"message": "Missing authorization code", "type": "OAuthException", "code": 1, "fbtrace_id": "Aq9wMwG6ewl"}}

Я не хочу отображать это. Вместо этого я хочу вернуться на домашнюю страницу своего сайта, выдав сообщение «Ошибка входа в Facebook», как показано в примере входа в facebook stackoverflow.


person Satyanarayana Swamy    schedule 13.03.2016    source источник


Ответы (2)


Наконец-то я получил ответ. Вот он.

public function handleProviderCallback()
{
    try {
        $user = Socialite::driver('facebook')->user();
    } catch (\Exception $e) {
        //Here you can write excepion Handling Logic
    }
}
person Satyanarayana Swamy    schedule 06.04.2016

Попытка улова не дала мне хорошего результата. Я использовал следующие методы, чтобы отловить эту ошибку. Если вы используете библиотеку Laravel Socialite, безусловно, у нее есть вызов функции handleProviderCallback. При этом используйте этот код

handleProviderCallback Метод

/**
 * Obtain the user information from GitHub.
 *
 * @return Response
 */
public function handleProviderCallback()
{

    $error_code = Input::get('error_code');

    if ($error_code == 200)
    {
        return redirect()->route('sign-in')->with('error','You\'ve chose not to grant us permission to connect with your Facebook account.');
    }
    else
    {
        $fbUser = Socialite::driver('facebook')->user();
        # rest of your code
    }
}

Откуда это error_code ??

Что ж, если вы посмотрите на страницу с ошибкой (с черным экраном Laravel), вы увидите URL-адрес этой страницы. У него есть методы получения error, error_code, error_description, error_reason, state.

Ex : http://localhost:8000/login/facebook/callback?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied&state=mIxNjoDCogT2piMV5LX1Imk6GWNzqPUt3JZaqsIo#_=_


Что я могу сделать, чтобы оптимизировать это

Вы можете использовать инструкцию switch на основе ошибки Проверить эти коды ошибок Facebook, с сообщением об ошибке и передайте его.

person Abdulla Nilam    schedule 19.10.2017