如何处理 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方法errorerror_codeerror_descriptionerror_reasonstate

例如: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(移动)

如何处理带有斜线的 Laravel Eloquent “WHERE”查询? (Laravel 5.3)

如何处理与 Laravel 的复杂关系?

如何处理 Laravel 到 Vue.js 的布尔值

Laravel 5.4 验证请求,如何处理更新时的唯一验证?