Laravel Socialite Facebook错误:" POST https://graph.facebook.com/oauth/access_token导致'400 Bad Request`"

时间:2017-02-26 11:29:12

标签: php facebook facebook-graph-api oauth

我已使用Laravel Socialite为Facebook进行社交登录,但工作正常。我没有改变任何东西,现在它没有工作。它在尝试登录时显示此错误:

Client error:发布https://graph.facebook.com/oauth/access_token resulted in a 400次错误请求response: {"error":{"message":"This IP can't make requests for that application.","type":"OAuthException","code":5,"fbtrace_id":"D (truncated...)

我还没有更改我的Facebook应用中的设置,也没有更改我的代码。 我的代码如下:



Route::get('login', ['as' =>'getLogin', 'uses'=>'Auth\AuthController@getLogin']);
Route::get('handleProviderCallback/{provider}', 'Auth\AuthController@handleProviderCallback');






public function login($provider = false)
    {
     if(!$provider) {
            $user = Input::all();
            $auth_user = new AuthenticateUser();
            $is_logged = $auth_user->findByEmailOrCreate($user, false);
            if($is_logged) {

                Session::put('user', Auth::user());
                Session::put('user_id', Auth::user()->id);
                Session::put('email', Auth::user()->email);
                Session::put('name', Auth::user()->name);

                return redirect()->intended('dashboard');
            }
            return redirect('/')->withInput()->with('error', 'Wrong username or password!');
        }
        return \Socialite::with('facebook')->redirect();
    }
    
    public function handleProviderCallback($provider=false) {
        if(Input::has('code')) {
            $user = \Socialite::with($provider)->user();
            $auth_user = new AuthenticateUser();
            $provider_user = $auth_user->findByEmailOrCreate($user, $provider);
            Session::put("user", array($provider_user));
            Session::put('user_id', $provider_user->id);
            Session::put('email',$provider_user->email);
            Session::put('name',$provider_user->name);

            return redirect('dashboard');
        }
    }




问题出现在此行的handleProviderCallback方法中:

$user = \Socialite::with($provider)->user();

当我只转储这个: $user = \Socialite::with($provider)

它显示数据但是当它被用于获取用户数据时,它会返回错误:

$user = \Socialite::with($provider)->user();

config/services.php中,我设置了此示例的设置:



  'facebook' => [
        'client_id' => 'my-client-id-from-fb-app', 
        'client_secret' => 'my-secret-code-from-fb-app', 
        'redirect' => 'http://my-example-domain/my-site/handleProviderCallback/facebook'
    ],




在我的脸书应用程序中,我设置了设置:

App Domains: my-example-domain, Privacy Policy URL: http://my-example-domain/my-site/, Site URL: http://my-example-domain/my-site/handleProviderCallback/facebook, Valid OAuth redirect URIs: http://my-example-domain/my-site/handleProviderCallback/facebook

3 个答案:

答案 0 :(得分:1)

是的,我根本没有检查请求以查看返回了什么,但是Larachat上的某人帮助我解决了这个问题。

在吸引用户和处理请求之前,我要做的就是在回调方法中添加以下代码:

if (!$request->has('code') || $request->has('denied')) {
   return redirect('/');}

答案 1 :(得分:0)

从.env文件获取密钥值后,我在本地计算机上收到此消息

char* entrada;  //global strings without assigned value declared here 
char* entrada2; //

正如预期的问题是秘密密钥,我粘贴错了,所以经过双重检查和正确复制/从fb过去一切正常。

希望这些信息对某人有所帮助。

答案 2 :(得分:-1)

您的Laravel版本是什么?

我经历过完全相同的问题,在浏览完社交软件包后做了一些改动,它解决了问题。你可能想尝试一下。

vendor / laravel / socialite / TwoFacebookProvider第81行

替换此

parse_str($response->getBody(), $data);

$data = json_decode($response->getBody(), true);

似乎数据没有添加