7

在 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 错误请求响应:{"error":{"message":"Missing authentication code","type":"OAuthException","code":1,"fbtrace_id":"Aq9wMwG6ewl"}}

我不想显示这个而是我想通过给出一条消息“Facebook登录失败”来返回我的网站主页,就像stackoverflow facebook登录中显示的那样。

4

2 回答 2

6

最后我得到了答案。这里是

public function handleProviderCallback()
{
    try {
        $user = Socialite::driver('facebook')->user();
    } catch (\Exception $e) {
        //Here you can write excepion Handling Logic
    }
}
于 2016-04-06T01:19:34.123 回答
1

Try 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#_=_


我能做些什么来优化这个

您可以使用switch基于错误的语句检查此 Facebook 错误代码,并带有错误消息并传递它。

于 2017-10-19T07:34:09.557 回答