在Laravel Socialite中我们被重定向到facebook。但是当用户取消(不允许Facebook访问公共配置文件)时,它会给出错误授权异常
RequestException.php第107行中的ClientException:客户端错误:GET https://graph.facebook.com/oauth/access_token?client_id=1309844325833234&client_secret=1304bbdd28400tret49a295d324d577c&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Ffacebook%2Fcallback` 导致400 Bad Request响应:{“error”:{“message”:“Missing 授权 码”, “类型”: “OAuthException”, “代码”:1, “fbtrace_id”: “Aq9wMwG6ewl”}}
我不想显示这个而是我想回到我的网站主页,给出一条消息“Facebook登录失败”,就像stackoverflow facebook登录中显示的那样。
答案 0 :(得分:5)
最后我得到了回答。这是
public function handleProviderCallback()
{
try {
$user = Socialite::driver('facebook')->user();
} catch (\Exception $e) {
//Here you can write excepion Handling Logic
}
}
答案 1 :(得分:1)
尝试抓住并没有给我带来好结果。我用下面的方法来捕获这个错误。如果你正在使用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 Black screened),请查看该页面的URL。它具有以下获取方法error
,error_code
,error_description
,error_reason
,state
。
例如:
http://localhost:8000/login/facebook/callback?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied&state=mIxNjoDCogT2piMV5LX1Imk6GWNzqPUt3JZaqsIo#_=_
您可以使用基于错误Check this Facebook error codes的switch
语句,并显示错误消息并将其传递。