我跟随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"}}
答案 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";
}
}