Laravel 5.1 - Facebook через Socialite (ошибка клиента: 400)

Использование этого руководства по Laracast (Laravel 5.0 - Socialite) , особенно до мин. 12.11, я успешно все настроил. Однако я использую Laravel 5.1.

  • Определил мой маршрут, но в настоящее время закомментировал поставщика обратного вызова, поскольку я просто пытаюсь получить данные пользователя с помощью взятого токена:

    Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
    //Route::get('auth/facebook/aaa', 'Auth\AuthController@handleProviderCallback');
    
  • В config>services.php добавлены предметы первой необходимости:

    'facebook' => [
     'client_id' => '##',
     'client_secret' => env('FB_SECRET_ID'),
     'redirect' => 'http://laratest.dev/auth/facebook',   
    ],
    

Я решил пока вернуться на ту же страницу (auth/facebook). Вот почему я установил возврат как domain.devv/auth/facebook для тестирования.

  • В моем AuthController.php я установил:

    public function redirectToProvider(AuthenticateUser $authenticateUser, Request $request)
     {  
       return $authenticateUser->execute($request->has('code'));
     }
    
  • И, наконец, в моем AuthenticateUser.php:

    use Illuminate\Contracts\Auth\Guard;  (PS. I changed Authenticator to Guard)
    
       class AuthenticateUser {
          private $users;
          private $socialite;
          private $auth;
    
    public function __construct(UserRepository $users, Socialite $socialite, Guard $auth)
     {
         $this->users = $users;
         $this->socialite = $socialite;
         $this->auth = $auth;
     } 
    
    public function execute($hasCode)
     {   
       // dd($hasCode) *First dd
    
      if ( ! $hasCode) return $this->getAuthorizationFirst();
    
      // $user = $this->socialite->driver('facebook')->user();
    
      // dd($hasCode) *Second dd
      // dd($user) *Third dd
     }
    
    private function getAuthorizationFirst()
     {
       return $this->socialite->driver('facebook')
         ->scopes(['public_profile', 'email'])->redirect();
     } 
    }
    

Теперь я нажимаю ссылку Login with Facebook, и меня перенаправляют на domain.dev/auth/facebook?code=943299043290...

Когда я использую только *First dd (все остальные закомментированные строки закомментированы) - он возвращает false.

Когда я использую только *Second dd (с комментарием строки $user = $this->socialite->driver('facebook')->user();), он возвращает true.

Так что все работает идеально и проходит execute(), затем getAuthorizationFirst(). Наконец, возвращается к execute() с взятым токеном, который также содержится в ссылке (domain.dev/auth/facebook?code=943299043290...).


Моя проблема возникает здесь:

На втором этапе раскомментирую $user = $this->socialite->driver('facebook')->user();, получаю сообщение об ошибке:

ClientException в строке 69 Middleware.php: ошибка клиента: 400

1. в /Applications/MAMP/htdocs/laratest/vendor/guzzlehttp/guzzle/src/Middleware.php, строка 69

2. в Middleware :: GuzzleHttp {closure} (object (Response)) в строке 199 Promise.php

3. в Promise :: callHandler ('1', object (Response), array (object (Promise), object (Closure), null)) в строке 152 Promise.php

4. в Promise :: GuzzleHttp \ Promise {closure} () в строке 60 TaskQueue.php

5. в TaskQueue-> run () в строке 96 CurlMultiHandler.php

эта строка ($user = $this->socialite->driver('facebook')->user();) не работает для меня по некоторым причинам (хотя она работает в руководство (минимум 12.11 для 15-секундного краткого объяснения).

Каждый раз, когда я использую $user = $this->socialite->driver('facebook')->user();, я получаю сообщение об ошибке ClientException in Middleware.php line 69: Client error: 400 и, конечно же, не могу получить dd($user).

Чтобы добавить, когда я вижу ошибку ClientException, ссылка все еще с кодом: (domain.dev/auth/facebook?code=943299043290...)


person senty    schedule 23.07.2015    source источник


Ответы (1)


У меня тоже была эта проблема, в моем случае мне нужно добавить свой домен в config / session.php в поле домена и добавить его тоже в моем поставщике приложений

person Andres Felipe    schedule 08.09.2015