ichinya/laravel-socialite is a Laravel package for socialite for laravel.
It currently has 0 GitHub stars and 64 downloads on Packagist (latest version 1.3.0).
Install it with composer require ichinya/laravel-socialite.
Discover more Laravel packages by ichinya
or browse all Laravel packages to compare alternatives.
Last updated
Пакет добавляет готовый OAuth-вход для Laravel через laravel/socialite:
/socialite/{driver}/redirect и /socialite/{driver}/callback;social_accounts для привязки провайдера к пользователю;^8.3|8.4|8.5^12.25|^13.1laravel/socialitecomposer require ichinya/laravel-socialite
php artisan vendor:publish --tag=ichinya-socialite
php artisan migrate
socialite.redirect.Socialite::driver($driver).redirect_hooks, пакет даёт hook-классу шанс вернуть кастомный response.null, сконфигурирован неверно или завершился ошибкой, пакет делает fallback к штатному provider response.driver + identity с пользователем и выполняет login/bind flow.Если пакет разрабатывается локально внутри Laravel-приложения:
composer config repositories.ichinya-laravel-socialite path packages/ichinya/laravel-socialite
composer update ichinya/laravel-socialite
composer show ichinya/laravel-socialite
Ожидаемый результат проверки: dist: [path] packages/ichinya/laravel-socialite.
Чтобы вернуться к обычной версии из registry:
composer config --unset repositories.ichinya-laravel-socialite
composer update ichinya/laravel-socialite
config/socialite.php<?php
return [
'drivers' => [
'github' => '/assets/socialite/github.svg',
'google' => '/assets/socialite/google.svg',
'telegram' => '/assets/socialite/telegram.svg',
],
'redirect_hooks' => [
'telegram' => \App\Infrastructure\Auth\TelegramRedirectScreen::class,
],
'stateless_drivers' => [
'telegram' => true,
],
'redirects' => [
'after_login' => '/cabinet',
'after_bind' => '/cabinet',
'on_error' => 'route:login',
],
];
drivers: активные провайдеры в формате driver => icon_path.redirect_hooks: карта driver => class-string для container-resolved hook-классов.stateless_drivers: драйверы, для которых нужно ->stateless().redirects.after_login: редирект после login flow.redirects.after_bind: редирект после bind flow.redirects.on_error: редирект при ошибке OAuth. Поддерживает путь и route:<name>.Hook нужен для custom redirect screen, когда provider на этапе redirect() отдаёт HTML, legacy widget или другой нестандартный ответ, а приложению нужен собственный wrapper screen.
Hook-класс должен реализовывать Ichinya\LaravelSocialite\Contracts\RedirectHook:
<?php
namespace App\Infrastructure\Auth;
use Closure;
use Ichinya\LaravelSocialite\Contracts\RedirectHook;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Response;
use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirectResponse;
class TelegramRedirectScreen implements RedirectHook
{
public function handle(
string $driver,
mixed $provider,
Closure $fallback,
): RedirectResponse|Response|SymfonyRedirectResponse|string|null {
if ($driver !== 'telegram' || !method_exists($provider, 'getButton')) {
return null;
}
return response('<html>custom wrapper screen</html>');
}
}
Hook получает lazy callback $fallback, если приложению нужно вручную вернуть исходный provider response без преждевременного вызова redirect().
Illuminate\Http\ResponseIlluminate\Http\RedirectResponseSymfony\Component\HttpFoundation\RedirectResponsestringnullnull: используется штатный provider response;redirect.В логах ищите:
DEBUG на resolve hook по driver;DEBUG на fallback после null;WARN на отсутствующий hook-класс;ERROR на exception внутри hook или ошибке container resolution;INFO на successful custom response.config/services.php и .env'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URI'),
],
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_REDIRECT_URI'),
],
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI="${APP_URL}/socialite/google/callback"
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_REDIRECT_URI="${APP_URL}/socialite/github/callback"
Для Telegram нужен socialiteproviders/telegram.
composer require socialiteproviders/telegram
'telegram' => [
'bot' => env('TELEGRAM_LOGIN_BOT_NAME', env('TELEGRAM_BOT_NAME')),
'client_id' => null,
'client_secret' => env('TELEGRAM_BOT_TOKEN'),
'redirect' => env('TELEGRAM_LOGIN_REDIRECT_URI', env('APP_URL').'/socialite/telegram/callback'),
],
TELEGRAM_LOGIN_BOT_NAME=your_bot_name
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_LOGIN_REDIRECT_URI="${APP_URL}/socialite/telegram/callback"
Пример регистрации Telegram provider:
use Illuminate\Support\Facades\Event;
use SocialiteProviders\Manager\SocialiteWasCalled;
use SocialiteProviders\Telegram\Provider as TelegramProvider;
Event::listen(function (SocialiteWasCalled $event): void {
$event->extendSocialite('telegram', TelegramProvider::class);
});
Useruse Ichinya\LaravelSocialite\Traits\HasSocialites;
class User extends Authenticatable
{
use HasSocialites;
}
После этого доступна связь:
$user->socials;
GET /socialite/{driver}/redirect (socialite.redirect)GET /socialite/{driver}/callback (socialite.callback)При ошибке OAuth пакет редиректит на socialite.redirects.on_error и кладёт текст ошибки в ключ socialite.
@if($errors->has('socialite'))
<div>{{ $errors->first('socialite') }}</div>
@endif
Добавьте драйвер в stateless_drivers:
'stateless_drivers' => [
'telegram' => true,
],
Проверьте services.telegram.bot и TELEGRAM_LOGIN_BOT_NAME.
Проверьте:
APP_URL=https://...Смотрите CHANGELOG.md.
MIT. See LICENSE.md.