5

プロジェクトに Facebook ログインを実装しようとしていますが、次のエラーが表示されます。

Middleware.php 行 69 の ClientException: クライアント エラー: 400

  1. /Applications/MAMP/htdocs/laratest/vendor/guzzlehttp/guzzle/src/Middleware.php 69 行目

  2. Middleware::GuzzleHttp{closure}(object(Response)) Promise.php 行 199 で

  3. Promise::callHandler('1', object(Response), array(object(Promise), object(Closure), null)) で Promise.php 行 152

  4. Promise::GuzzleHttp\Promise{closure}() で TaskQueue.php 行 60

  5. CurlMultiHandler.php 行 96 の TaskQueue->run() で


私が経験した手順:

  • composer require laravel/socialite& composer update.

  • 私のconfig>services.appでは、

'facebook' => [ 'client_id' => env('FB_CLIENT_ID'), 'client_secret' => env('FB_SECRET_ID'), 'redirect' => 'http://localhost.com:8888', ],

  • config>app.phpLaravel\Socialite\SocialiteServiceProvider::class,に&'Socialite' => Laravel\Socialite\Facades\Socialite::class,を追加

  • ルートを正常にセットアップします。

Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider'); Route::get('auth/facebook', 'Auth\AuthController@handleProviderCallback');

  • ブレード ファイルでリンクを正常にセットアップします。Login with Facebook

  • Controller>AuthController.phpに、次を追加しました。

    use Laravel\Socialite\Facades\Socialite;
    
    ** Beside everything that AuthController has, inside the AuthController class, I added:**
    
      public function redirectToProvider()
       {
        return Socialite::driver('facebook')
             ->scopes(['scope1', 'scope2'])->redirect();
       }
    
    /**
     * Obtain the user information from Facebook.
     *
     * @return Response
     */
    
       public function handleProviderCallback()
        {
          $user = Socialite::driver('facebook')->user();
    
        // $user->token;
        }
    
  • またユーザーテーブル:

       public function up()
        {
           Schema::create('users', function (Blueprint $table) {
              $table->increments('id');
              $table->string('username');
              $table->string('name');
              $table->string('email')->unique();
              $table->string('password', 60);
              $table->string('avatar');
              $table->string('provider');
              $table->string('provider_id');
              $table->rememberToken();
              $table->timestamps();
                });
        }
    

編集:一部 をコメントアウトする$user = Socialite::driver('facebook')->user();と、リダイレクトされますlocalhost.com/auth/facebook

編集 2: 私の.envファイル:

'facebook' => [ FB_CLIENT_ID => '###', FB_SECRET_ID => 'this-is-secret!', ],

4

4 に答える 4

0

私は同じ問題を抱えていました(Middleware.php行69のClientException:クライアントエラー:400)。Facebookの詳細設定で「Require App Secret」をオフにするだけで、問題は解決しました。たぶん、この情報は役に立ちます。

于 2015-08-22T08:11:12.353 に答える
0

私はFacebook APiで同様の問題を抱えていました.Response code 400が返され、Iveは試しました:

composer require laravel/socialite & composer update

そして依存関係を更新しました:

依存関係の更新 (require-dev を含む) - laravel/socialite の削除 (v2.0.11) - laravel/socialite のインストール (v2.0.14)

Laravel 5.1を使用しています:

composer.json:

    "laravel/framework": "5.1.*",
    "laravel/socialite": "^2.0"

そして、今はうまくいっているようです

これが誰かを助けることを願っています

于 2016-01-22T13:24:31.467 に答える