如何检查用户在使用社交媒体登录后是否选择不授予我的应用程序访问权限?
How do I check if the user chose not to grant my app access after logging in with social media?
我正在关注 Socialite github documentation,如果用户成功登录 Facebook 并授予我的应用程序访问权限,下面的控制器方法就可以正常工作。
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->user();
dd($user);
// $user->token;
}
但是,当 Facebook 询问用户权限时,我如何知道用户是否选择了 "Cancel"?
目前,我在 Facebook 页面上单击 "Cancel" 后收到以下错误消息,要求我允许与该应用程序共享我的信息:
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"}}
检查回调函数中的请求。如果用户选择不授予访问权限意味着没有请求发送到回调函数:
public function handleProviderCallback(Request $request)
{
if(!$request->all())
{
return redirect('login')->with('message','Social authentication cancelled');
}
$user = Socialite::driver('facebook')->user();
dd($user);
}
我将我的代码更新为以下内容,它成功了:
public function handleProviderCallbackFacebook(Request $request)
{
if ($request->has('code')) {
$user = Socialite::driver('facebook')->user();
dd($user);
}
else
{
echo "fail";
}
}
我正在关注 Socialite github documentation,如果用户成功登录 Facebook 并授予我的应用程序访问权限,下面的控制器方法就可以正常工作。
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->user();
dd($user);
// $user->token;
}
但是,当 Facebook 询问用户权限时,我如何知道用户是否选择了 "Cancel"?
目前,我在 Facebook 页面上单击 "Cancel" 后收到以下错误消息,要求我允许与该应用程序共享我的信息:
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"}}
检查回调函数中的请求。如果用户选择不授予访问权限意味着没有请求发送到回调函数:
public function handleProviderCallback(Request $request)
{
if(!$request->all())
{
return redirect('login')->with('message','Social authentication cancelled');
}
$user = Socialite::driver('facebook')->user();
dd($user);
}
我将我的代码更新为以下内容,它成功了:
public function handleProviderCallbackFacebook(Request $request)
{
if ($request->has('code')) {
$user = Socialite::driver('facebook')->user();
dd($user);
}
else
{
echo "fail";
}
}