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 в строке Middleware.php 69: ошибка клиента: 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’, объект (Response), массив (объект (Promise), объект (Closure), null)) в строке Promise.php 152

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

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...)

4

Решение

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]