SNS 로그인 라인 연동 > 개발강좌

개발강좌

프로그램 강좌 :
1. 유창화님의 썸네일, 정규표현식, 이미지관련 강좌
2. Sphinx 검색엔진을 이용한 도로명 주소 검색 시스템 구축

SNS 로그인 라인 연동 정보

그누보드5 SNS 로그인 라인 연동

첨부파일

Line.php (7.6K) 95회 다운로드 2018-08-02 01:47:00

본문

라인 연동이 필요하여 HybridAuth를 탑재한 그누보드 소셜 로그인에 덧대어 제작해보았습니다.

 

라인 연동의 핵심은 라인측에 Callback Url을 지정할 때 URL에 ? <- 들어가면 안됩니다. 지정은 되는데 막상 실행해보면 

invalid redirect_uri 라고 에러만 내뱉지요.

 

그렇다면 어떻게 해야할까요? 

저같은 경우에는 아래와 같이 지정했습니다. 

www.xxxxx.com/plugin/social/line.php

 

line.php는 index.php를 복사한 라인 연동 전용 스크립트입니다.

오리지날 콜백 URL은 아래와 같습니다.

www.xxxxx.com/plugin/social/?hauth.done=line

 

말씀드렸다시피 쿼리스트링 시작을 알리는 물음표가 들어가면 라인측에서 에러를 내뱉는다고 했습니다.

그러니 line.php 라는 스크립트를 하나 만들어 시뮬레이션을 한 것입니다.

 

line.php의 특징은

 

/plugin/social/includes/g5_endpoint.php의 내용을 line.php로 복사하여

 

--------- 아래 부분을................

        if( defined('G5_SOCIAL_LOGIN_START_PARAM') && G5_SOCIAL_LOGIN_START_PARAM !== 'hauth.start' && isset($_REQUEST[G5_SOCIAL_LOGIN_START_PARAM]) ){
            $_REQUEST['hauth_start'] = preg_replace('/[^a-zA-Z0-9\-\._]/i', '', $_REQUEST[G5_SOCIAL_LOGIN_START_PARAM]);
        }

        if( defined('G5_SOCIAL_LOGIN_DONE_PARAM') && G5_SOCIAL_LOGIN_DONE_PARAM !== 'hauth.done' && isset($_REQUEST[G5_SOCIAL_LOGIN_DONE_PARAM]) && !isset($_REQUEST['hauth_doen']) ){
            $_REQUEST['hauth_done'] = preg_replace('/[^a-zA-Z0-9\-\._]/i', '', $_REQUEST[G5_SOCIAL_LOGIN_DONE_PARAM]);
        }

----------- 아래의 내용으로 치환한 것입니다.

$_REQUEST['hauth_done'] = 'line';
 

 

위 내용을 모두 적용하셨다면..

/plugin/social/includes/functions.php를 여시고

-- 아래 함수를 찾아.. 아래와 같이 변경합니다.

 

function get_social_callbackurl($provider, $no_domain=false){

    $base_url = G5_SOCIAL_LOGIN_BASE_URL;

    if($provider === 'line') {
        $base_url = $base_url . 'line.php';
    } else {
        if( $provider === 'kakao' && $no_domain ){
        $base_url = '/'.ltrim(parse_url($base_url, PHP_URL_PATH), '/');
        }

        $base_url = $base_url . ( strpos($base_url, '?') ? '&' : '?' ).G5_SOCIAL_LOGIN_DONE_PARAM.'='.$provider;
    }

    return $base_url;
}

 

--- 다시 아래 함수를 찾아 라인의 정보를 배열에 추가해줍니다.

function social_extends_get_keys($provider)

 

-- 추가할 배열은 아래와 같습니다. 네이버 위나 아래에 위치하면 되겠습니다.

        // Line
        $r['Line'] = array(
                    "enabled" => option_array_checked('line', $config['cf_social_servicelist']) ? true : false,
                    "redirect_uri" => get_social_callbackurl('line'),
                    "keys" => array(
                        "id" => $config['cf_line_clientid'],
                        "secret" => $config['cf_line_secret'],
                    ),
                    "display"   =>  "popup",
                    "scope"   => 'profile', // optional
                    "trustForwarded" => false
                );

 

위 내용을 모두 적용하셨다면......

 

/plugin/social/Hybrid/Providers/Naver.php를 복사하여 Line.php로 명명하시고 라인측이 제공하는 OAuth2 스펙으로 맞추시면 되겠습니다.

 

Line.php는 따로 올리겠습니다.

 

-- 추가로

cf_line_clientid,  cf_line_secret의 환경설정 필드를 생성하시고 라인측에서 발급하는 각각의 값을 모두 저장하셔야합니다. 

관리자에서는 SNS 로그인 네이버 부분을 복사하시어 라인으로 맞게 변경하시면 설정하기 쉽게 수정하실 수 있습니다.

 

 

추천
4

댓글 15개

SNS 연동 로그인을 적용해보려고 각서비스에  접속해보니, 링크연결이 끊기면  해당홈페이지 주소 자체를 불허하네요
연습삼아 익혀보려 했더니  방법이  없네요 ㅠㅠ
어떤 상황인지 좀더 알려주실수 있나요?
라인 로그인을 적용했는데,
A 사이트는 성공,
B 사이트는 400 Bad Request
위 댓글 입력 후 사정상 사이트운영을 잠정중지하고 있었습니다.
어떤 상황이었는지도 기억이 가물하네요.
오늘이랑 내일 다시 접속 후에 상황 발생되면 자세하게 올리겠습니다.
즐거운 불금 되세요~~^^
좋은자료 공유 감사합니다
인증키 발급과정 등을 정리해서 공유하겠습니다
실제 성공사례까지 해볼생각입니다
잘.되.야.될.텐.데.....
https://sir.kr/pg_lecture/851 에 현재 정리된 자료를 올렸습니다
2개 웹사이트에 적용했는데,
1개는 정상작동, 1개는 400 에러 ㅜㅜ
전체 103
개발강좌 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT