Laravel - Socialite & Passport as api Auth социальный вход - PullRequest
0 голосов
/ 18 октября 2018

Я создал 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

...