У меня есть приведенный ниже код для входа в 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".
Спасибо, но я уже добавил домен.
Выглядит неплохо. Попробуйте очистить кеш конфигурации, запустите «php artisan config: clear». Также попробуйте установить 'redirect' => '/ auth / facebook / callback'. Похоже, что опция «перенаправить» в ваших сервисах игнорируется. «Redirect_uri» в созданном URL-адресе facebook берется из опции «redirect» для «facebook» в services.php.
Спасибо, вы хотите протестировать только «/ auth / facebook / callback» вместо «https: //....ngrok.io/auth/facebook/callback»?
Подобно этому, когда пользователь нажимает кнопку входа в систему с помощью кнопки facebook, пользователь перенаправляется на «facebook.com/v3.0/dialog/… ...», и он показывает ошибку «заблокированный URL-адрес», URL-адрес перенаправления отсутствует в белом списке .....
Но затем, если пользователь нажимает «ОК», он перенаправляется на «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-адреса не включен (усечен ...)».
Я думаю, проблема в том, что 'redirect' => 'https: //....ngrok.io/auth/facebook/callback' игнорируется и по какой-то причине используется значение proj.test. Попробуйте "php artisan config: clear".
Спасибо, я использовал эту команду config: clear, но та же ошибка.
Попробуйте запустить "php artisan config: cache" на сервере PRODUCTION, чтобы восстановить кеш конфигурации.
Спасибо, у меня нет производственного сервера, использование nkrok не считается производственным сервером, верно? (Я новичок)
Попробуйте очистить все кеши и конфигурации: 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/…
Спасибо, но та же «Ошибка клиента: POST https://graph.facebook.com/v3.0/oauth/access_token привела к ошибке 400 Bad Request» с использованием этих команд для очистки кешей и конфигураций.
вы можете подтвердить свой идентификатор провайдера FB?
Client_id, настроенный в services.php, равен идентификатору приложения, настроенному в основных настройках.






Facebook не принимает маршруты localhost для перенаправления, если вы попытаетесь поместить URL-адрес перенаправления в api консоли facebook, это вернет ошибку, вы должны протестировать это в среде разработки или производства с реальным URL-адресом
Спасибо, но использование ngrok url считается localhost?
Я думаю, что то же самое, если вы проходите через туннелирование, вы должны предоставить URL-адрес, отличный от localshost, потому что Facebook не принимает этот URL-адрес перенаправления, тогда вы можете проверить это только в среде разработки или производства.
Рекомендую настроить на своем проекте XDEBUG. Тогда вы сможете ставить точки останова в свой проект и будете знать, что происходит.
Вы можете легко найти инструкцию по установке XDEBUG для вашей среды. Вот хороший пример: Установка Xdebug на Homestead 7.0, PHP 7.2
прочитайте ошибку facebook, вам нужно зарегистрировать свое приложение в facebook и добавить свой домен