본문 바로가기
프로그래밍/Web

Laravel 4 oauth-4-laravel 설치하기 (Laravel 5 추가)

by 사악신 2015. 6. 29.



Laravel 인증 관련 모듈 중 가장 많이 사용되는 놈으로보여 설치해 보았습니다. 먼저 composer.json 에 다음을 추가합니다.


"require": {

  "artdarek/oauth-4-laravel": "dev-master"

}


업데이트를 실행합니다.


composer update


app\config\app.php 에 서비스 프로바이더를 추가합니다.


'providers' => array(

    // ...


    'Artdarek\OAuth\OAuthServiceProvider'

)


별칭도 추가합니다.


'aliases' => array(

    // ...


    'OAuth' => 'Artdarek\OAuth\Facade\OAuth',

)


이어서 설정 파일을 생성합니다.


php artisan config:publish artdarek/oauth-4-laravel


생성된 파일은 app/config/packages/artdarek/oauth-4-laravel.config.php 이며 아래의 내용을 가지고 있습니다. 페이스북에서 발급받은 App ID, App Secret 등을 입력합니다.


<?php 


return array( 

/*

|--------------------------------------------------------------------------

| oAuth Config

|--------------------------------------------------------------------------

*/


/**

* Storage

*/

'storage' => 'Session', 


/**

* Consumers

*/

'consumers' => array(


/**

* Facebook

*/

        'Facebook' => array(

            'client_id'     => 'App ID 값',

            'client_secret' => 'App Secrect 값',

            'scope'         => array('email'),

        ),


)


);


인증 처리를 위한 컨트롤러를 생성합니다.


php artisan genereate:controller AuthController


생성된 컨트롤러에 페이스북 로그인 처리를 위한 메소드를 추가합니다.(예제에 있는 소스를 그대로 사용하였습니다.)


<?php


class AuthController extends \BaseController {


public function loginWithFacebook()

{

// get data from input

$code = Input::get( 'code' );


// get fb service

$fb = OAuth::consumer( 'Facebook' );


// check if code is valid


// if code is provided get user data and sign in

if ( !empty( $code ) ) {


// This was a callback request from facebook, get the token

$token = $fb->requestAccessToken( $code );


// Send a request with it

$result = json_decode( $fb->request( '/me' ), true );


$message = 'Your unique facebook user id is: ' . $result['id'] . ' and your name is ' . $result['name'];

echo $message. "<br/>";


//Var_dump

//display whole array().

dd($result);


}

// if not ask for permission first

else {

// get fb authorization

$url = $fb->getAuthorizationUri();


// return to facebook login url

return Redirect::to( (string)$url );

}

}


}


라우트 및 링크는 다음과 같습니다.


Route::get('fbauth', 'AuthController@loginWithFacebook');


<a href="fbauth">페이스북으로 로그인하기</a>





Laravel 5의 경우,



composer.json 에 아래와 같이 추가합니다.


"require": {

  "oriceon/oauth-5-laravel": "dev-master"

}


Provider 및 별칭을 config/app.php 에 등록합니다.


'providers' => [

    // ...


    'Artdarek\OAuth\OAuthServiceProvider',

]


'aliases' => [

    // ...


    'OAuth' => 'Artdarek\OAuth\Facade\OAuth',

]


github 의 설명은 상기와 같지만 기존 app.php 에 등록된 프로바이더와 별칭의 형식에 맞게 다음과 같이 추가하였습니다.


Artdarek\OAuth\OAuthServiceProvider::class,


...


'OAuth' => Artdarek\OAuth\Facade\OAuth::class,



이후 설정 파일을 생성하기 위하여 다음 명령어를 실행합니다.


php artisan vendor:publish




생성된 설정 파일은 config 디렉토리에 위치(oauth-5-laravel.php)합니다.



사용 예제에도 변화가 있습니다.


public function loginWithFacebook(Request $request)

{

    // get data from request

    $code = $request->get('code');


    // get fb service

    $fb = \OAuth::consumer('Facebook');


    // check if code is valid


    // if code is provided get user data and sign in

    if ( ! is_null($code))

    {

        // This was a callback request from facebook, get the token

        $token = $fb->requestAccessToken($code);


        // Send a request with it

        $result = json_decode($fb->request('/me'), true);


        $message = 'Your unique facebook user id is: ' . $result['id'] . ' and your name is ' . $result['name'];

        echo $message. "<br/>";


        //Var_dump

        //display whole array.

        dd($result);

    }

    // if not ask for permission first

    else

    {

        // get fb authorization

        $url = $fb->getAuthorizationUri();


        // return to facebook login url

        return redirect((string)$url);

    }

}


반응형

댓글