카카오 로그인 연동은 의외로 간단하다.

 

카카오 로그인 버튼을 커스터마이징 하게 설정하기 때문에 따로 버튼 생성은 하지 않겠다.

 

일단 카카오 개발자 센터에 들어가서 기본적인 세팅부터 해야한다.

 

1. 카카오 개발자 센터에 접속. https://developers.kakao.com/

2. 우측 상단의 로그인 버튼을 눌러 카카오 계정으로 로그인.

3. 앱 만들기 클릭

4. 이름과 회사명 입력 후 앱 만들기 버튼 클릭

5. 우측 메뉴 사용자 관리 클릭

6. 사용자 관리 활성화 버튼 클릭

7. 프로필 정보 수집 목적란에 "소셜로그인에 사용" 입력

8. 카카오계정(이메일)란의 수집조건을 '연결시 선택'으로 설정

9. 카카오계정(이메일)란의 수집목적을 '중요정보 전달 및 로그인 계정용으로 사용'으로 설정

10. 하단의 저장버튼 클릭

11. 좌측의 '일반' 클릭

12. 중앙 우측의 '플랫폼 추가' 버튼 클릭

13. '웹' 클릭

14. 내 사이트의 도메인을 입력. 사용하는 도메인이 여러개면 모두 입력

15. 추가 버튼을 클릭

16. 네이티브 앱 키, REST API 키 값을 기억해둠

 

여기까지하면 기본적인 세팅 및 설정을 완료한 것이다.

카카오 로그인은 네이버 로그인처럼 따로 검수등을 거치지 않아도 된다.

 

<a href="https://kauth.kakao.com/oauth/authorize?client_id=자신의 rest api key&redirect_uri=내리다이렉트url&response_type=code">카카오 로그인</a>

 

버튼만 생성해주고 api url만 걸어주면 끝이다.

 

그리고 나서 해야할 일이 아주 많아지는데

리다이렉트 url 파일로 이동해서 작업을 진행해야한다.

 

$get_data = $_GET;

 

$shell_string = "curl -v -X POST https://kauth.kakao.com/oauth/token -d 'grant_type=authorization_code' -d 'client_id=내 REST API KEY' -d 'redirect_uri=http://".$_SERVER['HTTP_HOST']."/oauth' -d 'code=".$get_data['code']."'";

$output = shell_exec($shell_string);

$token_json = json_decode($output, true);

 

$kakao_email_check = 0;
if (@!$token_json['access_token']) {
    echo "<script>alert('아이디 정보가 없습니다. 재시도 해주세요.');</script>";

    exit();
} else {
    $shell_string = "curl -v -X POST https://kapi.kakao.com/v2/user/me -H 'Authorization: Bearer ".$token_json['access_token']."' -d 'property_keys=[\"kakao_account.email\"]'";

$user_info = shell_exec($shell_string);

 

$user_info_json = json_decode($user_info, true);

 

if (!@$user_info_json['kakao_account']['email'];) {
    $shell_string = "curl -v -X POST https://kapi.kakao.com/v1/user/unlink -H 'Authorization: Bearer ".$token_json['access_token']."'";
    shell_exec($shell_string);

    alert('필수 정보에 동의하지 않으셨습니다. 로그인을 재시도 해주세요.', '_login');
}

 

print_r($user_info_json);

 

이렇게 하면 $user_info_json에 카카오 계정 정보가 담긴 것을 볼 수 있다.

저 $user_info_json에서 데이터를 뽑아서 회원가입을 시키든 로그인을 시키든 활용하면 될 것이다.




코드이그나이터 데이터 베이스 설정을 위해

application > config > database.php 파일로 이동을 한다.

 

기본 설정에서 PDO의 경우는 hostname을 사용하지않고 dsn을 사용해서 연결을 한다.

 

설정은 밑에처럼 기본적으로 설정을 해주면 되겠다.

 

$active_group = 'default';
$query_builder = TRUE;
$host = 'host';
$db_name = 'dbname';

$db['default'] = array(
    'dsn' => 'mysql:host='.$host.';dbname='.$db_name,
    //'hostname' => 'localhost',
    'username' => 'mysql id',
    'password' => 'mysql pw',
    'database' => $db_name,
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

 

dsn의 사용과 dbdriver를 pdo로 바꿔주는게 핵심이다.

 

그리고 model에서는

 


$query = "SELECT * FROM `member` WHERE `where` = ?";
$result = $this->db->conn_id->prepare($query);
$result->execute(array('a'));

return $this->db->conn_id->lastInsertId();

 

형태로 사용하면 된다.




ALTER TABLE `table` CHANGE `기존 컬럼명` `변경 컬럼명` 타입 ex) int;


ALTER TABLE `table` ADD `추가 컬럼명` 타입;




root로 접속을 해서



사진에서 보이듯 


useradd 계정이름

passwd 계정이름


을 차례대로 치면 New password:가 뜬다.


새로운 비밀번호를 입력하고 Retype 이 뜨면 또 새로운 비밀번호를 쳐서

두 비밀번호가 동일할 경우 비밀번호가 업데이트 성공했다고 뜬다.


계정이 제대로 생성된걸 확인하고 싶으면


cat /etc/passwd

cut -f1 -d: /etc/passwd


두가지 방법중 하나로 확인하면 된다.




$_SERVER['HTTP_REFERER']

를 사용하면 이전 접속 경로를 확인할 수 있다.


단점은 주소를 직접 치고 들어오거나, 즐겨찾기에서 접속하는 경우

또 onclick 으로 접속하는 경우 REFERER로 체크가 불가능하다.

+ Recent posts