예제 소스는 classic asp로 구현했습니다.
나에게 보내기Copy URL
카카오톡 나에게 보내기는 사용자 중에서 카카오계정에 연결한 카카오톡 사용자에 한해 카카오톡 나와의 챗팅방으로 메시지를 보낼 수 있는 기능입니다. 해당 기능을 사용하기 위해서는 성공적인 로그인 후에 얻을 수 있는 사용자 토큰이 필요합니다.
(https://developers.kakao.com/docs/restapi#카카오톡-나에게-보내기)1. 카카오 개발자 등록
https://accounts.kakao.com/login?continue=https://developers.kakao.com/login
2. 내 애플리케이션 추가작업
3. 사용자관리 설정
일반을 클릭하면 rest api 키를 얻을수 있습니다. 밑에 소스에서 client_id 변수에 이 값을 넣어주셔야됩니다.
4. 템플릿 추가
5. restapi key 확인 및 도메인 등록
내어플리케이션 > 설정 > 일반 > REST API 키 확인, 사이트 도메인 등록, path 등록
6. 로그인 처리
https://developers.kakao.com/docs/restapi#사용자-관리-로그인
ex>
https://kauth.kakao.com/oauth/authorize?client_id={client_id}&redirect_uri={등록한 path}&response_type=code
7. 토큰받기 처리 및 나에게 메시지 전송
등록한 path 페이지에서 code라는 request 값을 받는다.
받은 code값을 이용하여 token 값을 요청
[aaa.asp 페이지]
'async 함수
Function postFormData(url, headerArr, data)
Dim xhr, i
Set xhr = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
xhr.open "POST", url, false
for i = 0 to ubound(headerArr)
xhr.setRequestHeader headerArr(i)(0), headerArr(i)(1)
next
xhr.send data
If (xhr.Status = 200) then
postFormData = xhr.ResponseText
response.write postFormData
Else
Err.Raise 1001, "postFormData", "Post to " & url & " failed with " & xhr.Status&" message "&xhr.responseText
End If
End Function
client_id = "38c9*********************8"
url = "https://주소.co.kr/index22.asp"
code = request("code")
'토큰 요청 값 받기
'최초 요청을 보냈을시 access_token, refresh_token
set tokenObj = JSON.parse(
postFormData("https://kauth.kakao.com/oauth/token",
array(array("Content-Type","application/x-www-form-urlencoded")),
"grant_type=authorization_code&client_id="&client_id&"&redirect_uri="&url&"&code="&code))
access_token = tokenObj.access_token
refresh_token = tokenObj.refresh_token
'refresh token 요청 값 받기
'refresh_token은 기본 12시간~24시간이 아닌 더 긴 시간을 유지할수 있는 token임
set refreshTokenObj = JSON.parse(
postFormData("https://kauth.kakao.com/oauth/token",
array(array("Content-Type","application/x-www-form-urlencoded")),
"grant_type=refresh_token&client_id="&client_id&"&redirect_uri="&url&"&refresh_token="&refresh_token))
'refresh token 요청시 access_token만 넘어옴
access_token = refreshTokenObj.access_token
'access_token 값을 이용하여 message 보내기
response.write postFormData("https://kapi.kakao.com/v1/api/talk/memo/send?template_id=828&args="&
Server.URLEncode("{""${message}"":""테스트적용완료"",""${subject}"":""적용완료""}"),
array(array("Authorization", "Bearer "& access_token)),"")
위와 같이 나에게 메시지가 옴
- 나에게 보낸다는 서비스이기때문에 광범위하게 사용하기에 제약사항이 좀 있습니다.
구현하시서 생각해보시길..
안녕하세요. 해당 블로그 보고 카카오톡 나에게 보내기 기능을 PHP로 사용 해보려고 하는 사람입니다. 적어주신 예시대로 진행하여 [ 'access_token 값을 이용하여 message 보내기 ] 여기 단계까지 진행했는데, 메시지를 보내려고하니 [{"code":-501,"msg":"given account is not connected to any talk user."} ] 라는 에러가 나오는데 혹시 해결책을 알 수있을지 여쭤보려고합니다. 감사합니다.
답글삭제제가 빼먹고 이미치 추가를 안한 항목이 있습니다
삭제"3. 사용자관리 설정" 두번째 이미지 보시면 rest api client_id를 받아오실수 있습니다.
여기서 얻은 client_id를 최초 토큰 받아올때부터 사용해서 받아와야됩니다.
https://developers.kakao.com/docs/restapi#간편한-참조-응답-코드
이 안에 501 코드 살펴보면
"카카오톡 미가입 사용자가 카카오톡 API를 호출 하였을 경우"라고 나옵니다.
'access_token 값을 이용하여 message 보내기 이 전에 access_token을 받아오는데 이것은 제대로 받아오는지도 확인해주세요.
안녕하세요. 저도 나에게 보내기 개발하려고 하는데요.
답글삭제PHP 로 개발해도 ASP 와 동일하게 진행 하면 될까요?
감사합니다.
php도 전혀 문제 없습니다.
삭제답변 감사드립니다ㅠㅠ
삭제index22.asp에는 어떤내용이 들어가나요?
답글삭제