SNS 로그인 라인 연동
라인 연동이 필요하여 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 로그인 네이버 부분을 복사하시어 라인으로 맞게 변경하시면 설정하기 쉽게 수정하실 수 있습니다.
댓글 15개
만들어봐야겠네요
연습삼아 익혀보려 했더니 방법이 없네요 ㅠㅠ
라인 로그인을 적용했는데,
A 사이트는 성공,
B 사이트는 400 Bad Request
어떤 상황이었는지도 기억이 가물하네요.
오늘이랑 내일 다시 접속 후에 상황 발생되면 자세하게 올리겠습니다.
즐거운 불금 되세요~~^^
인증키 발급과정 등을 정리해서 공유하겠습니다
실제 성공사례까지 해볼생각입니다
잘.되.야.될.텐.데.....
2개 웹사이트에 적용했는데,
1개는 정상작동, 1개는 400 에러 ㅜㅜ
게시판 목록
개발강좌
1. 유창화님의 썸네일, 정규표현식, 이미지관련 강좌
2. Sphinx 검색엔진을 이용한 도로명 주소 검색 시스템 구축
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 107 | 그누보드5 |
|
2개월 전 | 128 | |
| 106 | 그누보드5 |
선택과집중
|
3개월 전 | 343 | |
| 105 | 그누보드5 |
선택과집중
|
4개월 전 | 326 | |
| 104 | 그누보드5 |
선택과집중
|
5개월 전 | 284 | |
| 103 | 그누보드5 | 1년 전 | 1255 | ||
| 102 | 그누보드5 | 2년 전 | 918 | ||
| 101 | 그누보드5 | 2년 전 | 1008 | ||
| 100 | 그누보드5 |
|
2년 전 | 2280 | |
| 99 | 그누보드5 |
|
2년 전 | 844 | |
| 98 | 정규표현식 |
|
2년 전 | 1097 | |
| 97 | 그누보드5 | 3년 전 | 2309 | ||
| 96 | 그누보드5 | 3년 전 | 2700 | ||
| 95 | 그누보드5 |
|
3년 전 | 3157 | |
| 94 | 그누보드5 |
|
3년 전 | 3579 | |
| 93 | 그누보드5 | 3년 전 | 2856 | ||
| 92 | 그누보드5 | 4년 전 | 5630 | ||
| 91 | 그누보드5 | 4년 전 | 3348 | ||
| 90 | 그누보드5 | 7년 전 | 8252 | ||
| 89 | 정규표현식 | 7년 전 | 8290 | ||
| 88 | 그누보드5 | 7년 전 | 4581 | ||
| 87 | 정규표현식 | 8년 전 | 7388 | ||
| 86 | 그누보드5 | 8년 전 | 5450 | ||
| 85 | 정규표현식 | 8년 전 | 4100 | ||
| 84 | 정규표현식 |
프로그래머7
|
8년 전 | 3698 | |
| 83 | 정규표현식 |
프로그래머7
|
8년 전 | 3353 | |
| 82 | 정규표현식 |
프로그래머7
|
8년 전 | 3582 | |
| 81 | 이미지관련 | 8년 전 | 8438 | ||
| 80 | 이미지관련 | 8년 전 | 6640 | ||
| 79 | 정규표현식 | 8년 전 | 46427 | ||
| 78 | 정규표현식 | 8년 전 | 5455 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기