У меня есть код ниже, чтобы войти через 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 код = …&состояние = … #знак равно«и появляется страница с:
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 = ……знак равноmsgstr «; он вставлен в БД, но вместо перенаправления пользователя в» proj.test «появляется пустая страница.
Я рекомендую вам настроить на вашем проекте XDEBUG. Тогда вы сможете ставить точки останова в своем проекте, и вы будете знать, что происходит.
Вы можете легко найти инструкцию по установке XDEBUG для вашей среды. Вот хороший пример: Установка Xdebug на Homestead 7.0, PHP 7.2
Facebook не принимает локальные маршруты для перенаправления, если вы попытаетесь поместить URL-адрес перенаправления в консоль API api, это вернет ошибку, вы должны проверить это в среде разработки или производства с реальным URL