如何处理laravel socialite“缺少授权异常”

时间:2016-03-13 16:56:54

标签: laravel facebook-login laravel-5.2 laravel-socialite

在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登录中显示的那样。

2 个答案:

答案 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。它具有以下获取方法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 codesswitch语句,并显示错误消息并将其传递。