Я создал API, используя laravel с паспортом и socialite, я могу зарегистрировать простых пользователей с почтальоном, но в соц. Логине запутался, как этот процесс будет работать, я создал такой же маршрут и функции socialite в API, поэтому мы можем войти через Facebookи Google в Почтальон / Проект, используя мой API.
Маршрут:
Route::get('/login/{provider}', 'Api\AuthController@redirect');
Route::get('/login/{provider}/callback', 'Api\AuthController@Callback');
ApiAuthController:
public function redirect($provider)
{
return Socialite::driver($provider)->stateless()->redirect();
}
public function Callback($provider)
{
$userSocial = Socialite::driver($provider)->stateless()->user();
dd($userSocial);
dd($userSocial->token);
$users = User::where(['email' => $userSocial->getEmail()])->where('provider', $provider)->first();
if ($users) {
Auth::login($users);
$http = new Client;
$response = $http->post(url('oauth/token'), [
'form_params' => [
'grant_type' => 'password',
'client_secret' => 'secret',
'client_id' => 'secret',
'username' => $users->email,
'password' => 'secret',
'scope' => '',
],
]);
return response(['data' => json_decode((string) $response->getBody(), true)]);
} else {
$user = User::create([
'name' => $userSocial->getName(),
'email' => $userSocial->getEmail(),
'provider_id' => $userSocial->getId(),
'provider' => $provider,
'password' => \Hash::make(secret),
]);
$http = new Client;
$response = $http->post(url('oauth/token'), [
'form_params' => [
'grant_type' => 'password',
'client_secret' => 'secret',
'client_id' => 'secret',
'username' => $user->email,
'password' => 'secret',
'scope' => '',
],
]);
dispatch(new SendEmailJob())->onQueue('emails');
return response(['data' => json_decode((string) $response->getBody(), true)]);
}
}
Выше того же кода работает нормально.Я хочу, чтобы этот сервис был другим, т. Е. Хочу использовать этот API в другом проекте, так как будет работать логин facebook / google