web-dev-qa-db-ja.com

Laravel Socialite Facebookエラー: "POSThttps://graph.facebook.com/oauth/access_tokenで` 400 BadRequest`が発生しました "

Facebook用に_Laravel Socialite_を使用してソーシャルログインを作成しましたが、正常に機能していました。私は何も変更していませんが、現在は機能していません。ログインしようとすると、次のエラーが表示されます。

_Client error:_ POST https://graph.facebook.com/oauth/access_token _resulted in a_400 Bad Requestresponse: {"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'
    ],_

私の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_

11
mistery_girl

ええ、何が返されるかを確認するためにリクエストをまったくチェックしませんでしたが、Larachatの誰かがこの問題を解決するのを手伝ってくれました。

ユーザーを取得してリクエストを処理する前に私がしなければならなかったのは、コールバックメソッドに次のコードを追加することだけでした。

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

.envファイルから秘密鍵の値を取得した後、ローカルマシンにこのメッセージが表示されました

ClientException in RequestException.php line 111:
enter code here Client error: `POST 
https://graph.facebook.com/v2.8/oauth/access_token` resulted in a `400 
Bad Request` response:
{"error":{"message":"Error validating client 
secret.","type":"OAuthException","code":1,"fbtrace_id":"ID"}}

予想通り、秘密鍵に問題があったので、貼り付けを間違えたので、再確認してfbから正しくコピーして貼り付けたところ、すべてうまくいきました。

この情報が誰かに役立つことを願っています。

1

あなたのLaravelバージョンは何ですか?

私はまったく同じ問題を経験しました。socialiteパッケージを調べて少し変更を加えた後、問題は解決しました。あなたはそれを試してみたいかもしれません。

vendor/laravel/socialite/TwoFacebookProvider line 81

これを交換してください

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

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

データが追加されていないようです

0
Ittikorn S.