如何处理 laravel 社交名媛“缺少授权异常”
Posted
技术标签:
【中文标题】如何处理 laravel 社交名媛“缺少授权异常”【英文标题】:how to handle laravel socialite "Missing authorization Exception" 【发布时间】:2016-06-28 15:13:25 【问题描述】:在 Laravel Socialite 中,我们被重定向到 facebook。但是当用户取消(不允许 facebook 访问公共个人资料)时,它会给出错误 Missing Authorization 异常
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 授权 code","type":"OAuthException","code":1,"fbtrace_id":"Aq9wMwG6ewl"
我不想显示此内容,而是想返回我的网站主页,方法是给出一条消息“Facebook 登录失败”,就像 *** facebook 登录中显示的那样。
【问题讨论】:
【参考方案1】:我终于得到了答案。这里是
public function handleProviderCallback()
try
$user = Socialite::driver('facebook')->user();
catch (\Exception $e)
//Here you can write excepion Handling Logic
【讨论】:
【参考方案2】:尝试 catch 并没有给我带来好的结果。我使用以下方法来捕获此错误。如果你使用的是 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 已筛选),请检查该页面的 URL。它有这些get方法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
语句,并带有错误消息并传递它。
【讨论】:
以上是关于如何处理 laravel 社交名媛“缺少授权异常”的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 社交名媛 Facebook 登录 cURL 错误 60
我应该如何处理:Wordpress 社交登录(网络)和 Flutter(移动)