php 워드프레스 개발

카카오 동의항목 여부 값 추출

최혁재 2024. 11. 4. 18:06

카카오 소셜 로그인은 사용자 편의성을 높여주는 간편한 로그인 기능을 제공하지만, 로그인 과정에서 수집할 수 있는 동의 항목에 대한 확인이 자동으로 제공되지 않습니다 . 특히 마케팅 동의와 같은 항목은 사용자가 동의했는지 여부를 추적하고 싶을 때 별도의 처리가 필요합니다.

이 글에서는 카카오 로그인 콜백에서 동의 여부를 확인할 수 없는 경우, 카카오 API를 활용해 동의 상태를 확인하고 WordPress usermeta에 저장하는 방법을 설명하겠습니다.

1. Kakao API를 이용한 마케팅 동의 확인

카카오 로그인 시 user_id와 같은 고유 식별자 값을 얻을 수 있습니다. 이 값을 이용해 별도로 카카오 API에 요청을 보내 사용자의 마케팅 동의 상태를 확인할 수 있습니다.

아래 코드는 user_id와 user_kakao_id 값을 받아서 카카오 서비스 약관 API에 요청을 보내 마케팅 동의 여부를 확인하고, 그 결과를 WordPress의 usermeta에 저장하는 예제입니다.

/**
     * kakao 로그인 마케팅 동의 usermeta 저장
     */

    public function schoolmoa_marketing_check($user_id , $user_kakao_id) {

        $service_app_admin_key = 'your_service_app_admin_key';
       
       
        $query_args = array(
            'target_id_type' => 'user_id',
            'target_id'      => $user_kakao_id,
            'tags'           => 'your_tags',
        );
       
        $url = add_query_arg( $query_args, $url );
       
        $headers = array(
            'Authorization' => 'KakaoAK ' . $service_app_admin_key,
        );
       
        $args = array(
            'method'  => 'GET',
            'headers' => $headers,
            'timeout' => 30,
        );
       
        $response = wp_remote_request( $url, $args );
        if ( !is_wp_error( $response ) ) {
            $response_code = wp_remote_retrieve_response_code( $response );
            $response_body = wp_remote_retrieve_body( $response );

            $data = json_decode( $response_body, true );
           
            if (isset($data['service_terms'][0]['agreed']) && $data['service_terms'][0]['agreed'] == true) {
                update_user_meta( $user_id, 'your_meta_key', 'yes' );
            } else {
                update_user_meta( $user_id, 'your_meta_key', 'no' );
            }
        }
    }



2. 코드 설명

  1. Admin Key 설정: 카카오 API의 Admin Key를 Authorization 헤더에 설정하여 API 호출 권한을 인증합니다.
  2. 요청 파라미터 구성: target_id_type을 user_id로 설정하고, target_id에 로그인 시 얻은 사용자 고유 ID (user_kakao_id)를 할당합니다. 추가적으로 필요한 태그가 있을 경우 tags를 지정합니다.
  3. API 호출: wp_remote_request 함수를 사용해 GET 요청을 보냅니다. 응답이 오류가 아닌 경우 response_body에서 JSON 데이터를 파싱합니다.
  4. 마케팅 동의 상태 확인 및 저장: service_terms 배열의 첫 번째 항목에 agreed 필드가 있는지 확인하고, true인 경우 update_user_meta 함수를 통해 usermeta에 저장합니다.

이 방법을 사용하면 사용자 로그인 시 동의 상태를 체크하여 저장할 수 있어, 마케팅 및 기타 서비스 운영에 필요한 동의 항목 정보를 관리하는 데 도움을 줄 수 있습니다.

결론

카카오 소셜 로그인을 이용하면서 사용자 동의 여부를 체크해야 하는 경우, 위와 같은 방법으로 별도의 API 요청을 통해 필요한 정보를 손쉽게 얻을 수 있습니다