Почему не работает логин через фейсбук? (Как отладить эту проблему, кроме проверки URL-адресов?)

У меня есть приведенный ниже код для входа в Facebook. Но не работает, показывает:

“Can't Load URL: The domain of this URL isn't
  included in the App's domains. To be able to 
    load this URL, add all domains and subdomains of your app to the
   App Domains field in your app settings."

Но URL был определен.

Маршруты:

Route::get('auth/{provider}', [
    'uses' => 'OauthController@redirectToProvider',
    'as' => 'social.auth'
]);

Route::get('auth/{provider}/callback', [
    'uses' => 'OauthController@handleProviderCallback',
]);

services.php:

'facebook' => [
        'client_id' => '...',
        'client_secret' => '...',
        'redirect' => 'https://....ngrok.io/auth/facebook/callback'
    ]

OauthController:

class OauthController extends Controller
{

    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();

    }


    public function handleProviderCallback($provider)
    {
        $userFace = Socialite::driver($provider)->user();
        // $user->token;

        $findUser = User::where('email', $userFace->email)->first();

        if ($findUser){
            Auth::login($findUser);
        }else{
            $user = new User;
            $user->name = $userFace->name;
            $user->surname = "";
            $user->email = $userFace->email;
            $user->password = bcrypt($user->name);
            $user->save();
            Auth::login($user);
        }
    }
}

Я меняю некоторые конфигурации, и теперь появляется другая ошибка. Пользователь нажимает кнопку «Войти через Facebook» и перенаправляется на страницу facebook, где необходимо ввести пароль. После ввода пароля пользователь перенаправляется на «https: //....ngrok.io/auth/facebook/callback? code = ... & state = ... # знак равно», и появляется страница с:

Laravel \ Socialite \ Two \ InvalidStateException
No message

Эта ошибка находится в файле /socialite/src/Two/AbstractProvider.php в "public function user() { if ($this->hasInvalidState()) { throw new InvalidStateException;} ..."

Конфигурации:

Конфигурации Laravel:

In services.php
    'redirect' => 'https://....ngrok.io/facebook/auth/callback'

In .env file:
    APP_URL=https://....ngrok.io

Настройки Facebook:

Client OAuth Login - yes
Web OAuth login - yes
Force Web OAuth Reauthentication - yes
Use Strict Mode for Redirect URIs - yes
Enforce HTTPS - No
Embedded Browser OAuth Login - No

Valid OAuth Redirect URIs: https://....ngrok.io/facebook/auth/callback

Basic settings: 
    App domains: ....ngrok.io
    Site URL: https://....ngrok.io/facebook/callback

Если я использую localhost, он работает.

С помощью "'redirect' => 'proj.test / auth / facebook / callback'" ;.

И в настройках фейсбука:

URL сайта: proj.test / auth / facebook / callback

Домены приложений: proj.test

Действительные URI перенаправления OAuth proj.test / auth / facebook / callback '"

Однако он не работает должным образом, пользователь перенаправляется на «proj.test / auth / facebook / callback? Code = ...... знак равно» ;, он вставлен в БД, но отображается пустая страница вместо того, чтобы пользователь был перенаправлен на "proj.test".

прочитайте ошибку facebook, вам нужно зарегистрировать свое приложение в facebook и добавить свой домен

J. Doe 13.07.2018 17:05

Спасибо, но я уже добавил домен.

user10066925 13.07.2018 17:11

Выглядит неплохо. Попробуйте очистить кеш конфигурации, запустите «php artisan config: clear». Также попробуйте установить 'redirect' => '/ auth / facebook / callback'. Похоже, что опция «перенаправить» в ваших сервисах игнорируется. «Redirect_uri» в созданном URL-адресе facebook берется из опции «redirect» для «facebook» в services.php.

Jannes Botis 28.07.2018 00:44

Спасибо, вы хотите протестировать только «/ auth / facebook / callback» вместо «https: //....ngrok.io/auth/facebook/callback»?

user10066925 28.07.2018 00:51

Подобно этому, когда пользователь нажимает кнопку входа в систему с помощью кнопки facebook, пользователь перенаправляется на «facebook.com/v3.0/dialog/… ...», и он показывает ошибку «заблокированный URL-адрес», URL-адрес перенаправления отсутствует в белом списке .....

user10066925 28.07.2018 01:03

Но затем, если пользователь нажимает «ОК», он перенаправляется на «https: //....ngrok.io/auth/facebook/callback? Error_code = ... & ‌ error_message = .... & s‌ tate =. .. # _ = _ "и показывает: Ошибка клиента: POST https://graph.facebook.com/v3.0/oauth/access_token привел к ответу 400 Bad Request: {" ошибка ": {" сообщение ": (усечено ...). Сообщение не на английском языке, но перевод похож на «Невозможно загрузить URL-адрес. Домен этого URL-адреса не включен (усечен ...)».

user10066925 28.07.2018 01:03

Я думаю, проблема в том, что 'redirect' => 'https: //....ngrok.io/auth/facebook/callback' игнорируется и по какой-то причине используется значение proj.test. Попробуйте "php artisan config: clear".

Jannes Botis 28.07.2018 01:18

Спасибо, я использовал эту команду config: clear, но та же ошибка.

user10066925 28.07.2018 01:22

Попробуйте запустить "php artisan config: cache" на сервере PRODUCTION, чтобы восстановить кеш конфигурации.

Jannes Botis 28.07.2018 16:46

Спасибо, у меня нет производственного сервера, использование nkrok не считается производственным сервером, верно? (Я новичок)

user10066925 29.07.2018 04:06

Попробуйте очистить все кеши и конфигурации: php artisan clear-compiled && php artisan view:clear && php artisan cache:clear && php artisan route:clear && php artisan config:clear. Кроме того, если вам не нужен доступ к своему сайту разработчика извне, вам не нужен ngrok для тестирования Facebook: stackoverflow.com/questions/2459728/…

Peter 29.07.2018 04:53

Спасибо, но та же «Ошибка клиента: POST https://graph.facebook.com/v3.0/oauth/access_token привела к ошибке 400 Bad Request» с использованием этих команд для очистки кешей и конфигураций.

user10066925 29.07.2018 12:45

вы можете подтвердить свой идентификатор провайдера FB?

Sagar Ahuja 02.08.2018 08:07

Client_id, настроенный в services.php, равен идентификатору приложения, настроенному в основных настройках.

user10066925 02.08.2018 12:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
14
700
2

Ответы 2

Facebook не принимает маршруты localhost для перенаправления, если вы попытаетесь поместить URL-адрес перенаправления в api консоли facebook, это вернет ошибку, вы должны протестировать это в среде разработки или производства с реальным URL-адресом

Спасибо, но использование ngrok url считается localhost?

user10066925 31.07.2018 18:34

Я думаю, что то же самое, если вы проходите через туннелирование, вы должны предоставить URL-адрес, отличный от localshost, потому что Facebook не принимает этот URL-адрес перенаправления, тогда вы можете проверить это только в среде разработки или производства.

Felipe Mora 04.08.2018 22:53

Рекомендую настроить на своем проекте XDEBUG. Тогда вы сможете ставить точки останова в свой проект и будете знать, что происходит.

Вы можете легко найти инструкцию по установке XDEBUG для вашей среды. Вот хороший пример: Установка Xdebug на Homestead 7.0, PHP 7.2

Другие вопросы по теме