> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Socialite (LINE Login) - LINE SDK for Laravel

> LINE Login에 의한 OAuth2 인증을 Laravel Socialite로 구현합니다.

## 개요

이 패키지는 `Socialite::extend()`를 사용한 정규 방식으로 LINE Login 드라이버를 제공합니다. 기본 제공 프로바이더와 완전히 동일한 API로 사용할 수 있습니다.

사용 가능한 드라이버:

| 드라이버         | 설명                                                                          |
| ------------ | --------------------------------------------------------------------------- |
| `line-login` | [LINE Login](https://developers.line.biz/ja/docs/line-login/)에 의한 OAuth2 인증 |

<Info>
  Laravel Socialite 자체의 사용법에 대해서는 [Socialite 가이드](/ko/socialite)를 참조하세요.
</Info>

## 설정

### .env

```dotenv theme={null}
LINE_LOGIN_CLIENT_ID=
LINE_LOGIN_CLIENT_SECRET=
LINE_LOGIN_REDIRECT=
```

## 기본적인 사용법

<Steps>
  <Step title="라우트 정의">
    `routes/web.php`에 리다이렉트용과 콜백용 두 라우트를 추가합니다.

    ```php theme={null}
    use App\Http\Controllers\SocialiteController;

    Route::get('login', [SocialiteController::class, 'login']);
    Route::get('callback', [SocialiteController::class, 'callback']);
    ```
  </Step>

  <Step title="컨트롤러 생성">
    ```php theme={null}
    <?php

    namespace App\Http\Controllers;

    use App\Models\User;
    use Illuminate\Http\Request;
    use Laravel\Socialite\Facades\Socialite;

    class SocialiteController extends Controller
    {
        public function login()
        {
            return Socialite::driver('line-login')->redirect();
        }

        public function callback(Request $request)
        {
            if ($request->missing('code')) {
                // 디버깅용. 프로덕션에서는 리다이렉트나 에러 처리로 변경하세요
                return redirect('/login')->withErrors('인증이 취소되었습니다.');
            }

            /** @var \Laravel\Socialite\Two\User */
            $user = Socialite::driver('line-login')->user();

            $loginUser = User::updateOrCreate([
                'line_id' => $user->id,
            ], [
                'name'          => $user->nickname,
                'avatar'        => $user->avatar,
                'access_token'  => $user->token,
                'refresh_token' => $user->refreshToken,
            ]);

            auth()->login($loginUser, true);

            return redirect()->route('home');
        }
    }
    ```
  </Step>
</Steps>

## 옵션 파라미터

`with()`로 추가 파라미터를 전달할 수 있습니다.

```php theme={null}
public function login()
{
    return Socialite::driver('line-login')->with([
        'prompt'     => 'consent',
        'bot_prompt' => 'normal',
    ])->redirect();
}
```

## 스코프 설정

가져올 권한을 스코프로 지정합니다.

```php theme={null}
public function login()
{
    return Socialite::driver('line-login')
                    ->setScopes(['profile', 'openid'])
                    ->redirect();
}
```

주요 스코프 목록은 [LINE Login 스코프](https://developers.line.biz/ja/docs/line-login/integrate-line-login/#scopes)를 참조하세요.

<Info>
  최신 정보는 [GitHub 저장소](https://github.com/invokable/laravel-line-sdk)를 참조하세요.
</Info>


## Related topics

- [LINE SDK for Laravel](/ko/packages/laravel-line-sdk/index.md)
- [알림 채널 - LINE SDK for Laravel](/ko/packages/laravel-line-sdk/notification.md)
- [Webhook / Bot - LINE SDK for Laravel](/ko/packages/laravel-line-sdk/bot.md)
- [Laravel Socialite (소셜 인증)](/ko/socialite.md)
- [Socialite - Laravel Bluesky](/ko/packages/laravel-bluesky/socialite.md)
