이전부터 몇몇 sns 서비스에 대해서 공유버튼 사용하다가, 불필요한건 날리다가.. 여러번했었는데요. 최근에 그냥 google, twitter, facebook 정도만 유지하고 있었습니다.
문뜩 카톡쪽도 추가하면 좋겠다는 생각이 들어 바로 적용했고 그 과정에 대한 내용 공유해봅니다.
(템플릿을 지정할 수 있어서 글 공유 이외에 다른 용도로도 써볼 수 있을 것 같네요)
카카오 개발자 등록&어플리케이션 등록
다른 SNS 공유 기능(대체로 그냥 공유 페이지에 a 태그로 링크 거는게 전부죠..)과 다르게 개발자 등록 후 API 키를 받아서 처리해야합니다. 덕분에 통계 뽑아 보기에는 좋겠네요.
우선 카카오 개발자 페이지(https://developers.kakao.com)로 접속하여 개발자 계정으로 가입(그냥 기존 톡 계정에서 몇몇 내용만 작성하면 끝) 후 어플리케이션을 생성해줍니다.
그 후 기본정보에 들어가보시면 앱 키 정보를 확인할 수 있습니다. 저는 블로그에 공유 기능만 추가할거라 Javascript 키만 필요했습니다.
사이트 도메인 지정 안하면 에러 납니다. |
그리고 위 이미지 아래쪽에 보시면 플랫폼 부분이 있는데, 여기서 Android, iOS, Web 여부와 허용할 서비스 지정이 필요합니다. 전 웹으로 하고 허용 서비스 공유가 사용되어도 좋은 서비스 도메인만 포함하였습니다.
여기서 허용서비스가 아닌 곳에서 제 API 키를 가지고 공유하는 경우 ErrorCode(4002) 에러가 발생합니다.
혹시라도 발생했다면 개발자 페이지에서 이런 부분들 우선적으로 확인해주시면 될 것 같습니다.
자 이제 거의 다 끝나갑니다. 카카오 링크 코드가 복잡하진 않으니 아래 링크 참고하시면 금방 원하시는 대로 구성이 가능할겁니다.
코드 대충 주석 달아놨으니.. 추가로 더 참고해주시면 좋을듯해요.
<a href="javascript:;" id="kakao-link-btn">
<!-- 버튼이 생기는 부분, id는 맘대로 쓰시되 아래 js 코드도 동일하게 적용해주셔야 합니다. -->
<img src="//developers.kakao.com/assets/img/about/logos/kakaolink/kakaolink_btn_medium.png" /> <!-- 톡 이미지 부분이고, 전 kakaolink_btn_small.png로 불러왔습니다. -->
</a>
<script type="text/javascript">
//<![CDATA[
// // 사용할 앱의 JavaScript 키를 설정해 주세요.
Kakao.init('YOUR APP KEY');
// // 카카오링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다.
Kakao.Link.createDefaultButton({
container: '#kakao-link-btn', // 컨테이너는 아까 위에 버튼이 쓰여진 부분 id
objectType: 'feed',
content: { // 여기부터 실제 내용이 들어갑니다.
title: '딸기 치즈 케익', // 본문 제목
description: '#케익 #딸기 #삼평동 #카페 #분위기 #소개팅', // 본문 바로 아래 들어가는 영역?
imageUrl: 'http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png', // 이미지
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com'
}
},
social: { /* 공유하면 소셜 정보도 같이 줄 수 있는데, 이 부분은 기반 서비스마다 적용이 쉬울수도 어려울 수도 있을듯 합니다. 전 연구해보고 안되면 제거할 예정 (망할 google blogger...) */
likeCount: 286,
commentCount: 45,
sharedCount: 845
},
buttons: [
{
title: '웹으로 보기',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com'
}
},
{
title: '앱으로 보기',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com'
}
}
]
});
//]]>
</script>
Javscript로 페이지 정보 불러오기
위에 방법대로 하면 항상 고정된 데이터에 대해 공유버튼이 생성되기 떄문에 매우 불편합니다. 글마다 매번 코드를 써줄 순 없지요. 서버사이드단(백엔드)에서 코드 사용이 가능하면 해당 부분에 직접 db에서 뽑은 내용을 넣어줄 수 있겠지만.. 그럴 수 없는 환경(보편적인 블로거들..ㅋㅋ, 특히 저와 같은 구글블로거...)에선 Javascript로 처리해주는게 깔끔합니다.
<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
<a href="javascript:;" id="kakao-link-btn">
<img src="//developers.kakao.com/assets/img/about/logos/kakaolink/kakaolink_btn_small.png" width="10px" />
</a>
<script type="text/javascript">
//<![CDATA[
// // 사용할 앱의 JavaScript 키를 설정해 주세요.
Kakao.init('bfd4cd7749e2b1ffca24a00eeb5aaabc');
// // 카카오링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다.
Kakao.Link.createDefaultButton({
container: '#kakao-link-btn',
objectType: 'feed',
content: {
title: document.title,
description: '내용, 주로 해시태그',
imageUrl: document.images[0].src,
link: {
webUrl: document.location.href,
mobileWebUrl: document.location.href
}
},
social: {
likeCount: 286,
commentCount: 45,
sharedCount: 845
},
buttons: [
{
title: 'Open!',
link: {
mobileWebUrl: document.location.href,
webUrl: document.location.href
}
}
]
});
//]]>
</script>
소셜 부분이나 Description 부분도 Javascript에서 값 가져올 수 있는 부분이라면 쉽게 만들 수 있습니다. 전.. 그럼 소셜 부분이나 확인해봐야겠네요. 결과는 댓글로 남겨놓겠습니다 :)
적용한 모습은 아래와 같습니다.
물론 테두리나 이런건 따로 적용... |
클릭해보면 공유하기 창이 나타나고(앱에서 클릭 시 바로 톡으로 웹에서 클릭하면 웹 공유 페이지로) 공유하면 위에 코드 적용한대로 톡방에 공유됩니다.
HAHWULSecurity engineer, Gopher and H4cker! |
label, og:tag 처리 부분 코드 추가했는데, 겸사겸사 댓글로 남겨둡니다 :)
ReplyDelete### [label부분 코드 추가]
label_buffer = "";
label_count = document.getElementsByClassName("label").length;
for(var i=0;i<label_count;i++)
{
label_buffer = label_buffer+" #"+document.getElementsByClassName("label")[i].innerHTML;
}
### [Og image 체크로직+추가]
image_buffer = "";
try {
image_buffer = $('meta[property=og\\:image]')[0].content
}
catch(exception){
image_buffer = "https://3.bp.blogspot.com/-CeZ76ZH92VQ/WqzpD8-8s6I/AAAAAAAAC4g/Xq05MaelrqInBmAern3JQJFWXgL9Mwt_ACLcBGAs/s1600/hwul.png"
}
finally {
}
많은 도움 되었습니다~ 감사합니다 ^^
ReplyDelete감사합니다 :)
Delete질문이 좀 모호하긴한데, 카카오 링크 자체가 SNS 공유 버튼입니다. 아이디나 아이피의 유무가 아닌 웹 페이지를 보고 있는 사용자가 액션을 통해서 자신의 카카오톡 채팅or친구 리스트에 카드 메시지로 전달할 수 있는 기능이에요 (:
Delete겨우 원하던 소스를 찾았습니다 감사합니다!!!!!!!
ReplyDelete그런데,,,처음에 알려주신 아래 소스로 설정하니 링크 타이틀(기사제목)만 변하고 이미지는 변하지 안네요. 각 기사의 섬네일도 자동으로 반영 시킬 수는 없는지요?
바쁘신데,,,죄송합니다. 아무리해도 안되서,,
아,,아래 소스란 저 위에서 제일 먼저 제시해주신 내용을 말합니다.
ReplyDelete앗 댓글 확인이 좀 늦었습니다. (메일보고 알았네요ㅜㅜ)
Delete이미비가 변하지 않는다면 게시글 이미지보다 위쪽에 고정된 이미지가 있는 것 같습니다. (코드를 구성할 떄 첫번째 이미지를 가져오도록 했기 떄문이죠)
혹시 해당 링크 주소 좀 알 수 있을까요? 동일한 위치에 게시글 이미지가 찍히는 것이면 부분에서 숫자 바꿔가며 이미지 찾는 것도 방법일 것 같구요, 아니면 찾아낼 수 있는 규칙을 봐야 코드를 쉽게 구성할 수 있을 것 같습니다.
imageUrl: document.images[0].src,
게시글 이미지 코드 부분이 이런식으로 class나 id가 지정되어 있다면 쉽게 걸러낼 수 있습니다.
Delete<img src="이미지 주소" id="blahblah~~" class=="blahblah~~">
[ e.g ]
imageUrl: document.getElementById('blahblah~~').src
안녕하세요~ 초보인데요~ 카페 24를 이용해 카톡 상품 공유 버튼을 넣는 작업을 하고 있습니다~
ReplyDeleteimageUrl: document.images[0].src, 코드를 넣고 카톡 공유하기를 해보았는데
이미지를 추출해내지 못하네요~
혹시 어떻게 하면 되는지 알려주실수 있나요 ㅠㅠ
우선 document.images[0].src 부분은 웹 페이지의 이미지 리스트 중 첫번째 값을 가져오는 코드인데요, 코드 수정 가능한 부분이라면 상품 이미지 부분에 id, name , class 등을 지정하고 해당 값을 기준으로 찾는 방법으로 가능할 것 같네요.
Delete예를들면.. 상품 이미지쪽 코드에 title_image 란 id 값을 지정해주고
<img src="이미지주소" id="title_image">
실제 코드에선 이런 형태로 이미지 주소를 뽑아낼 수 있습니다.
document.getElementById('title_image').src // 하면 이미지 주소이고, 이 데이터로 넘겨주면 이미지가 나타나게되죵.
한번해보시고 문제있는 부분있다면 댓글주세요~
사장님 진짜 너무 궁금한 질문있습니다
ReplyDelete제발 카카오톡 gj8303으로 연락 한번만 주세요 알려주시면 사례해드리겠습니다
글에 대해 궁금하신 내용은 댓글로 부탁드립니다
Delete안녕하세요 지금도 질문 가능 할까요?
ReplyDelete넵~ 언제든지요 ;D
Delete안녕하세요
ReplyDelete안녕하세요~
Delete안녕하세요 링크 스크립트 넣을때 해더에 넣었는데요 버튼 작동이 안되는 이유는 뭘까요 ㅜㅜ
ReplyDelete해결했습니다. 덕분에 쉽게 풀렸어요 감사합니다.
Delete다행이네요~ 감사합니다 :D
Delete안녕하세요, 웹에서 직접 클릭해서 대상 지정하지 않고 코드로 바로 특정 사용자에게/특정 방에 전송은 불가능하나요?
ReplyDelete