HybridAuth를 이용한 OAuth 인증(Facebook편)

배경



고객 의뢰에서 HybridAuth를 이용하여 OAuth 인증을 실현하고 싶다는 요구가 있어 실현 방법을 조사했다.

환경



서버 환경


  • OS: CentOS6.5
  • 클라우드: AWS
  • PHP5.6
  • Composer 사용


  • 구현



    기본적으로는 아래의 페이지를 읽어 가면 실현 가능하지만, (1)영어인 것, (2)OAuth의 구조(흐름)가 다소 어렵고, 실장 경험이 없으면 막히기 쉽다는 점에 주의.

    Facebook Authentication - HybridAuth

    Facebook Developers의 설정



    Facebook Developers 로 이동하여 브라우저에서 애플리케이션 설정을 수행해야 합니다.

    설정의 흐름은 크게 이하와 같다.
  • 응용 프로그램 등록하기
  • 실제로 OAuth 인증 기능을 설치할 서버의 URL 설정
  • 등록 후, App ID, App Secret를 취득한다

  • App ID, App Secret은 나중 단계에서 사용하기 위해 항상 삼가해야합니다.

    Hybridauth 설치 Composer

    이하의 작업은 문서 루트로 실시.

    1.Composer 사이트에서 composer.phar를 다운로드합니다.



    2.composer.json이라는 파일을 준비하고 다음 내용을 설명합니다.


    {
        "name": "genzouw/hybridauth_example",
        "authors": [
            {
                "name": "genzouw",
                "email": "[email protected]"
            }
        ],
        "require": {
            "hybridauth/hybridauth": "2.2.2"
        }
    }
    

    3. 커맨드 라인에서 다음 명령을 실행합니다.


    $ php composer.phar install
    

    라고 여러가지 썼지만, 문서 루트에 이하의 파일을 전개한 것을 배치하는 것만으로도 좋다.
  • h tp //오. gl/y인 mjG

  • 4. 마지막으로 index.php, auth.php라는 파일을 만들고 다음 내용을 설명한다.



    여기서의 주의는, #Server IP#에는 자신의 서버의 IP 주소(물론 도메인에서도 OK), #App ID#, #App Secret#**에는 이전의 Facebook 페이지로 설정한 마지막 페이지에 표시 되고 있는 값을 세트 하는 것.
    <?php
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    $config = array(
        "base_url" => "http://#Server IP#/auth.php",
        "providers" => array (
            "Facebook" => array (
                "enabled" => true,
                "keys"    => array ( "id" => "#App ID#", "secret" => "#App Secret#" ),
                "scope"   => "email, user_about_me, user_birthday, user_hometown", // optional
                // "display" => "popup" // optional
            )));
    
    use hybridauth\Hybrid\Auth;
    
    $hybridAuth = new Hybrid_Auth( $config );
    
    $adapter = $hybridAuth->authenticate( "Facebook" );
    
    $userProfile = $adapter->getUserProfile();
    
    echo '<pre>'; var_dump($userProfile); echo '</pre>';
    

    auth.php에 대해서는, 이제 이런 모습이 없다고 생각해 만들면 OK.
    <?php
    
    require_once __DIR__ . '/vendor/autoload.php';
    
    require_once "vendor/hybridauth/hybridauth/hybridauth/index.php";
    

    5.index.php에 액세스하면 Facebook 인증이 이루어집니다.



    인증이 성공하면 사용자 정보가 출력되어야 합니다.

    후기



    Twitter OAuth로 주저하는 사람은 적습니다만, Facebook OAuth로 주저하는 분은 얼마 안 있어요.
    저도 몇번이나 집어들었습니다.

    Facebook Graph API로 취득할 수 있는 정보가 Twitter보다 많다는 것도 요인의 하나이며, 인증이 강고해지고 있다고 생각합니다.

    좋은 웹페이지 즐겨찾기