Как проверить, решил ли пользователь не предоставлять доступ к моему приложению после входа в социальную сеть?

Я следую документации github Socialite, и приведенный ниже метод контроллера отлично работает, если пользователь успешно входит в систему. в Facebook и предоставляет доступ к моему приложению.

public function handleProviderCallback()
{
    $user = Socialite::driver('facebook')->user();
    dd($user);

    // $user->token;
}

Однако как узнать, выбрал ли пользователь «Отмена», когда Facebook запрашивает разрешения пользователя?

В настоящее время я получаю сообщение об ошибке ниже после того, как нажимаю «Отмена» на странице Facebook, которая запрашивает мое разрешение на передачу моей информации в приложение:

ClientException in RequestException.php line 111: 
Client error: `POST https://graph.facebook.com/oauth/access_token` resulted in a `400 Bad Request` response:
{"error":{"message":"Missing authorization code","type":"OAuthException","code":1,"fbtrace_id":"H75M4eMC+1f"}}

person Colin Hu    schedule 13.12.2016    source источник


Ответы (2)


Проверьте запрос в функции обратного вызова. Если пользователь решит не предоставлять доступ, это означает, что запрос не отправлен в функцию обратного вызова:

public function handleProviderCallback(Request $request)
{
   if(!$request->all())
   {
      return redirect('login')->with('message','Social authentication cancelled'); 
   }

   $user = Socialite::driver('facebook')->user();
   dd($user);

}
person Sanzeeb Aryal    schedule 13.12.2016

Я обновил свой код до следующего, что помогло:

public function handleProviderCallbackFacebook(Request $request)
{
if ($request->has('code')) {
  $user = Socialite::driver('facebook')->user();
  dd($user);
}
else 
{
echo "fail";
}
}
person Colin Hu    schedule 27.03.2017