如何在使用社交媒体登录后检查用户是否选择不授予我的应用访问权限?

时间:2016-12-13 02:46:05

标签: laravel facebook-login laravel-socialite

我跟随Socialite github documentation,如果用户成功登录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"}}

2 个答案:

答案 0 :(得分:1)

检查回调函数中的请求。如果用户选择不授予访问权,则表示没有请求发送到回调函数:

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

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

}

答案 1 :(得分:0)

我将我的代码更新为以下内容,这就是诀窍:

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