Laavel Socialite로 간단한 소셜 로그인

16777 단어 PHPLaravel
이것은 Laravel Advent Calendar 2014의 4일째 항목이다.3일째는 @ytake씨의 Laravel5 Testing, use Contracts입니다.아주 좋은 항목이니까 읽어주세요.

Laavel Socialite is는 도대체 무엇입니까?

Laravel Socialite는 소셜 로그인을 위한 패키지입니다.옵션이기 때문에 Laavel을 설치할 때는 포함되지 않지만 Composer에서 간단하게 설치할 수 있습니다.
처음 준비된 드라이버는 다음과 같습니다.
  • twitter
  • facebook
  • google
  • github
  • 독립형 드라이버를 만드는 것도 어렵지 않다는 설명이 뒤에 나온다.이번에는 Giithub에 상륙해 봅시다.

    Laavel Socialite 설치

    composer.json 다음과 같이 편집합니다.한 줄만 추가합니다.이번Illuminate/Html에도 설치했습니다.
    composer.json
    {
        "name": "laravel/laravel",
        "description": "The Laravel Framework.",
        "keywords": ["framework", "laravel"],
        "license": "MIT",
        "type": "project",
        "require": {
            "laravel/framework": "~5.0",
            "illuminate/html": "~5.0",  // オプションになったので追加
            "laravel/socialite": "~2.0" // ここを追加
        },
        "require-dev": {
            "phpunit/phpunit": "~4.0",
            "barryvdh/laravel-ide-helper": "~1.0"
        },
        "autoload": {
            "classmap": [
                "database",
                "tests/TestCase.php"
            ],
            "psr-4": {
                "App\\": "app/"
            }
        },
        "scripts": {
            "post-install-cmd": [
                "php artisan clear-compiled",
                "php artisan route:scan",
                "php artisan event:scan",
                "php artisan optimize"
            ],
            "post-update-cmd": [
                "php artisan clear-compiled",
                "php artisan ide-helper:generate",
                "php artisan optimize"
            ],
            "post-create-project-cmd": [
                "php artisan key:generate"
            ]
        },
        "config": {
            "preferred-install": "dist"
        },
        "minimum-stability": "dev"
    }
    
    
    그리고 config/app.php에 등록Laravel SocialiteService Provider.
    app.php
    <?php
    
    return [
    
        'providers'       => [
            'Laravel\Socialite\SocialiteServiceProvider', // こいつが大事
            'Illuminate\Html\HtmlServiceProvider',        // オプションじゃなくてもええんやで…。
        ],
        'aliases'         => [
            'Socialite' => 'Laravel\Socialite\Facades\Socialite',
        ],
    ];
    
    그리고 종착역에서
    command
    $ composer update
    
    됐어요.

    Giithub에 로그인해 보세요.


    그럼 실제로 해 보세요.

    애플리케이션 등록


    우선GiitHub 설정에서 Application으로 마이그레이션 Register New Application을 선택합니다.

    표시된 항목을 적절하게 입력합니다.중요한 것은'Authorization call back URL'이다.Giithub 인증 후 여기에 입력한 URL을 리디렉션합니다.입력이 끝나면 Register applicaton 버튼을 클릭합니다.

    클릭하면 오른쪽 위에 있는 모자이크로 가공된 Client ID와 Client Secret을 복사하여 편집기에 붙여넣습니다.나중에 설정 파일에 기술합니다.

    구성 파일에 Celient ID 및 Celient Secret 등록

    Facade의 설정은 Laravel Socialite에 등록됩니다.
    services.php
    <?php
    
    return [
        'github'   => [
            'client_id'     => 'xxx',
            'client_secret' => 'xxx',
            'redirect'      => 'http://localhost:8000/github/login',
        ]
    ];
    
    
    config/services.phpclient_id는 방금 복사한 것입니다.client_secret에 등록할 때 입력한 redirect를 기술합니다.
    어.. 응.나는 이런 설정치를 공유하고 싶지 않다.Laavel은 RubyAuthorization callback URL와 비슷한 기능을 가지고 있으니 다시 써 보십시오.
    services.php
    <?php
    
    return [
        'github'   => [
            'client_id'     => getenv('GITHUB_CLIENT_ID'),
            'client_secret' => getenv('GITHUB_CLIENT_SECRET'),
            'redirect'      => 'http://localhost:8000/github/login',
        ]
    ];
    
    
    그리고 프로젝트의 노선에 dotenv라는 서류를 작성한다.그리고 다음과 같이 설정합니다.
    .env
    GITHUB_CLIENT_ID=XXXXXXXXXXX
    GITHUB_CLIENT_SECRET=XXXXXXXXXXXXXXXXX
    
    .env 파일은 서로 다른 환경에서 포함하지 않으려는 설정값과 버전 관리를 설정하기 위한 것입니다.여기에 설정된 값은 .env 함수를 사용하여 얻을 수 있습니다.
    여기서 끝내도록 설정합니다.설치를 시작합시다.

    소셜 로그인을 시도해 보세요.


    아주 간단합니다.getenv 가볍게 쓸 수 있습니다.
    routes.php
    <?php
    
    Route::pattern('provider', 'github');
    
    Route::get('/', function()
    {
        if (!Auth::check()) {
            // ログイン済でなければリダイレクト
            return 'こんにちは ゲストさん. ' . link_to('github/ahthorize', 'Github でログイン.');
        }
        return 'ようこそ ' . Auth::user()->username . 'さん!';
    });
    
    Route::get('{provider}/authorize', function($provider)
    {
        // ソーシャルログイン処理
        return \Socialite::with($provider)->redirect();
    });
    
    Route::get('{provider}/login', function($provider)
    {
        // ユーザー情報取得
        $userData = Socialite::with($provider)->user();
        // ユーザー作成
        $user = User::firstOrCreate([
                'username' => $userData->nickname,
                'email'    => $userData->email,
                'avatar'   => $userData->avatar
        ]);
        Auth::login($user);
    
        return redirect('/');
    });
    
    아주 간단합니다.간단하게 설명해 주세요.
  • app/Http/routes.php에 액세스하고 로그인하지 않은 경우'/' 리디렉션
  • 목적지로 다시 호출github/authorize
  • \Socialite::with($provider)->redirect()로 설정되었을 때 Authorization callback URL로 호출하여 사용자를 얻기
  • 모델에 저장하여 로그인 처리
  • 이런 느낌이야.사용이 매우 편리합니다.

    드라이버를 개별적으로 설치


    지금 쓰고 있어요.미안합니다.업데이트 후에 알려드릴게요. 저장해 주시겠어요?삐라
    썼어.1년간의 복수.
    Laavel Socialite의 독립 실행형 드라이버 설치
    내일은 @syossan27씨의 "Laavel로 몇 가지 서비스를 해보면"입니다.기대해주세요!

    좋은 웹페이지 즐겨찾기