【问题标题】:how to handle laravel socialite "Missing authorization Exception"如何处理 laravel 社交名媛“缺少授权异常”
【发布时间】: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 登录失败”,就像 stackoverflow facebook 登录中显示的那样。

【问题讨论】:

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


    【解决方案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 语句,并带有错误消息并传递它。

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 2018-12-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多