Laravel Интеграция с несколькими API для входа в Google, Календаря и Диска - PullRequest
0 голосов
/ 25 мая 2020

У меня есть вопрос, который может быть полезен большинству из Laravel разработчиков. Я хочу разрешить пользователю подключаться к одному или нескольким из этих API:

  • Вход в Google
  • Календарь Google
  • Google Диск

До сих пор я использовал Laravel Socialite, который обеспечивает четкую связь со многими учетными записями в социальных сетях. Моя проблема в том, что через Socialite у меня есть только один драйвер Google, а мне нужно обращаться к другому API Google с разных кнопок.

Мои данные .env, подключенные к config / services. php:

GOOGLE_CLIENT_ID=1.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=XXX
GOOGLE_CALLBACK_URL=https://mysite/google/login_callback

GOOGLE_CALENDAR_CLIENT_ID=2.apps.googleusercontent.com
GOOGLE_CALENDAR_CLIENT_SECRET=YYY
GOOGLE_CALENDAR_CALLBACK_URL=https://mysite/google/calendar_callback

GOOGLE_DRIVE_CLIENT_ID=3.apps.googleusercontent.com
GOOGLE_DRIVE_CLIENT_SECRET=WWW
GOOGLE_DRIVE_CALLBACK_URL=https://mysite/google/drive_callback

Теперь мне ясно, как управлять несколькими API с помощью разных кнопок. Вот несколько вариантов:

  1. Использовать Socialite с уникальной точкой входа учетных данных (google_login) из Google Console Cloud и в функции обратного вызова в Контроллер. Я различаю разные случаи (логин, календарь, диск ...)
  2. Я создаю разные учетные данные Google для каждого API в разделе API, я использую Socialite только для входа в систему и создаю / загружаю отдельный пакет для Календаря, для Диска и т. д. c ...

Итак, основной момент: несколько API Google в Laravel должны применяться с уникальными учетными данными API, а на уровне контроллера я обращаюсь к относительному коду с использованием областей, или мне нужно создать отдельные учетные данные API каждого API, сделайте соответствующие ключи .env и управляйте всем отдельно.

Надеюсь, это не было слишком размытым. спасибо!

1 Ответ

0 голосов
/ 25 мая 2020

С пакетом «Socialite» вы можете выполнять только аутентификацию. Если вы разрабатываете Календарь и Диск, я бы посоветовал использовать клиентскую библиотеку Google

 $client = new \Google_Client();
 $client->setAccessToken($accessToken);
 $client->setSubject($email);
 $clien->addScope(['{scopes}']);
 $client->authorize();

 $client->get('https://www.googleapis.com/calendar/v3/calendars/' . $calendar_id . '/events');

См. Также этот документ: API событий Диск Апис

...