OAuth2 вхід через GitHub на Laravel: реалізація за 1 день

OAuth2 вхід через GitHub на Laravel: реалізація за 1 день

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
OAuth2 вхід через GitHub на Laravel: реалізація за 1 день
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1242
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

OAuth2 вхід через GitHub на Laravel: реалізація за 1 день

Уявіть: ви запускаєте SaaS для розробників, і кожен користувач вручну заповнює форму реєстрації. Конверсія падає на 30% — ніхто не хоче вводити пароль, якщо можна ввійти одним кліком. На одному з проєктів для СНГ-спільноти розробників ми впровадили GitHub OAuth — конверсія реєстрації зросла з 12% до 45% за тиждень. Вхід через GitHub у 12 разів швидше форми: 5 секунд проти 60. Наш досвід (10+ років, 50+ проєктів) показує, що GitHub OAuth — найнадійніший OAuth2-флоу: він не вимагає верифікації email (GitHub уже це зробив), дає стабільний ідентифікатор та аватар. Гарантуємо швидкість — від реєстрації додатку до продакшену за 1-2 дні.

GitHub OAuth безпечніше класичної реєстрації: ви не зберігаєте паролі, а GitHub бере на себе аутентифікацію. Крім того, це підвищує довіру — 95% користувачів надають перевагу соцвходу.

OAuth2 флоу GitHub

Процес складається з чотирьох кроків:

  1. Користувач натискає кнопку «Увійти через GitHub».
  2. GitHub відображає сторінку дозволів.
  3. Після згоди GitHub повертає тимчасовий код на ваш callback URL.
  4. Сервер обмінює код на токен доступу та запитує профіль.

Все це займає пару секунд. Токен живе до відкликання, але для входу ми не зберігаємо його — використовуємо лише для отримання даних при реєстрації.

Реєстрація OAuth App

  1. github.com → Settings → Developer settings → OAuth Apps → New OAuth App.
  2. Заповніть Application name, Homepage URL та Authorization callback URL.
  3. Збережіть Client ID та згенеруйте Client Secret.

Authorization callback URL має вести на ваш ендпоінт, наприклад https://example.com/auth/github/callback. Детальніше — GitHub OAuth documentation.

Зверніть увагу: GitHub App (не OAuth App) використовується для доступу до репозиторіїв — для авторизації користувачів достатньо OAuth App.

Laravel Socialite

// config/services.php 'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT_URI'), ], 
class GitHubAuthController extends Controller { public function redirect(): RedirectResponse { return Socialite::driver('github') ->scopes(['user:email']) ->redirect(); } public function callback(): RedirectResponse { try { $githubUser = Socialite::driver('github')->user(); } catch (\Exception $e) { return redirect('/login')->withErrors(['github' => 'Помилка авторизації']); } $user = User::updateOrCreate( ['github_id' => $githubUser->getId()], [ 'name' => $githubUser->getName() ?? $githubUser->getNickname(), 'email' => $githubUser->getEmail(), 'email_verified_at' => now(), 'avatar' => $githubUser->getAvatar(), 'github_username' => $githubUser->getNickname(), ] ); Auth::login($user, remember: true); return redirect()->intended('/dashboard'); } } 

Socialite абстрагує рутину OAuth: вам не потрібно вручну формувати запити, обробляти редиректи та парсити відповіді. Це скорочує обсяг коду на 70% порівняно з кастомною реалізацією. Ми на власному досвіді переконалися: помилки при ручному OAuth — часта причина багів у продакшені.

Переваги Socialite

Socialite підтримує десятки провайдерів з коробки. Ви просто перемикаєте драйвер — і GitHub OAuth перетворюється на GitLab або Google. При цьому єдиний інтерфейс знижує ймовірність помилок. Плюс автоматичне оновлення при зміні API провайдера.

Як обробити приватний email користувача GitHub?

Якщо користувач приховав email у налаштуваннях GitHub, getEmail() поверне null. Запит з scope user:email дозволяє отримати email через додатковий API-запит:

$emails = Http::withToken($githubUser->token) ->get('https://api.github.com/user/emails') ->json(); $primaryEmail = collect($emails) ->firstWhere(fn($e) => $e['primary'] && $e['verified']); 

Цей метод повертає підтверджений email. Якщо і його не знайдено — користувач не зможе увійти, поки не вкаже публічний email у GitHub.

Як обмежити вхід членами організації?

Якщо потрібно дозволити вхід лише членам певної GitHub-організації:

$membership = Http::withToken($githubUser->token) ->get("https://api.github.com/orgs/{$orgName}/members/{$githubUser->getNickname()}"); if ($membership->status() !== 204) { Auth::logout(); return redirect('/login')->withErrors(['github' => 'Вхід дозволено лише для членів організації']); } 

Що робити при помилках GitHub API?

GitHub API може бути недоступний або повернути помилку. Вбудовуємо логування та fallback-механізми: якщо запит не вдався, користувач бачить зрозуміле повідомлення, а ми отримуємо сповіщення. Додатково налаштовуємо повторні спроби (retry) з exponential backoff.

Що входить в інтеграцію

  • Створення та налаштування OAuth App
  • Підключення Laravel Socialite з вказаними скоупами
  • Реалізація контролерів та обробка помилок
  • Тестування всіх сценаріїв (приватний email, відмова в доступі, повторний вхід)
  • Документація з розгортання та підтримка 2 тижні після здачі

Процес роботи над інтеграцією

  1. Аналітика — з'ясовуємо вимоги: чи потрібен скринінг по організаціях, які дані профілю зберігати.
  2. Проектування — створюємо OAuth App, налаштовуємо оточення.
  3. Реалізація — підключаємо Socialite, пишемо контролери та обробку помилок.
  4. Тестування — перевіряємо сценарії: приватний email, відмова в доступі, повторний вхід.
  5. Деплой — викочуємо на продакшен, оновлюємо callback URL.
Параметр GitHub OAuth Email+пароль
Час першого входу ~5 секунд ~60 секунд (у 12 разів довше)
Кількість помилок вводу 0 ~30% користувачів
Безпека Токени OAuth Управління паролями
Довіра користувачів Висока (95% обирають соцвхід) Середня
Порівняння реалізації Socialite Кастомний OAuth
Код 15 рядків 100+ рядків
Час розробки 1 година 1-2 дні
Ризик помилок Низький Високий
Підтримка оновлень Автоматична Ручна

Строки

Інтеграція займає 1-2 робочих дні. За роки роботи ми реалізували GitHub OAuth на десятках проєктів і гарантуємо стабільну авторизацію. Зв'яжіться з нами для безкоштовної консультації — оцінимо ваш проєкт і запропонуємо оптимальне рішення.