/v2/api/talk/memo/default/send를 이용해 나에게 메시지 보내기를 구현 하려고 하는데요

안녕하세요.

가드대로 구현하는데, 계속 같은 에러가 나네요.
V1버전을 이용해도 같은 에러가 갑니다. 답변 부탁드릴께요.

바디메세지(템플릿을 생성하고 예제를 그대로 사용하였습니다., 근데 어떤 템플릿 사용하는지는 정의를 안해도 되나보져?)
{
“template_object” :
{
“object_type”: “feed”,
“content”:
“title”: “디저트 사진”,
“description”: “아메리카노, 빵, 케익”,
“image_url”: “http://mud-kage.kakao.co.kr/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg”,
“image_width”: 640,
“image_height”: 640,
“link”: {
“web_url”: “http://www.daum.net”,
“mobile_web_url”: “http://m.daum.net”,
“android_execution_params”: “contentId=100”,
“ios_execution_params”: “contentId=100”
}
}
}

에러메세지.

{
“msg”: “insufficient scopes.”,
“code”: -402,
“api_type”: “TALK_MEMO_DEFAULT_SEND”,
“required_scopes”: [
“talk_message”
],
“allowed_scopes”: [
“story_birthday”,
“account_email”,
“profile”
]
}

@cihcihcom
해당 에러는 메시지 전송에 대한 동의를 하지 않아서 발생하는 에러입니다.
나에게 보내기는 사용자 동의 후에 사용할 수 있는 기능이기 때문에,
동의가 되어 있지 않은 경우 code가 -402 에러가 발생합니다.
sdk를 사용하시는 거라면, 이 에러가 발생하면 sdk에서 동적동의창을 자동으로 띄우게 됩니다.
sdk가 아니라 rest api로 요청하시는 거라면, 동적동의 가이드를 참고하셔서 동적동의창을 띄우고 사용자가 동의한 후에 다시 api를 요청해 나에게 보내기를 사용하실 수 있습니다.
나에게 보내기 가이드: https://developers.kakao.com/docs/restapi/user-management#동적동의

답변 감사합니다.

현재 RestAPI를 사용 중인데요, Kakao 개발 툴인 Rest API도구를 이용해서 위의 설명 단계까지 같었습니다. 그 도구를 통해서는 이 작업이 불가능 한건가요?

현재까지 이해한건

  1. 승인절차(Login을 통해 Code를 받고,
  2. Auth를통해 토큰을 받고,
  3. 동의가 없으면 동적동의를 받아야 하는거 같은데요,

Rest API로 진행할때 간소하게 하는 방법은 없는건가요?
3번은 동의는 Kakotalk Account 주인에게 한번만 받으면 되는건가요?

답변 부탁드리겠습니다.

@cihcihcom
rest tool에선 아직 동적동의를 지원하진 않습니다.
동적동의 절차는,

  1. 유저의 토큰으로 api 호출을 하면 403 http status code에 response body의 code가 -402 를 return
  2. refresh token이로 동의창 요청. https://kauth.kakao.com/oauth/authorize 요청시 scope param에 1번의 response body의 required_scopes 의 항목으로 요청
    이때 브라우저에 카카오계정로그인이 되어 있는 상태라면, 자연스럽게 동의창이 뜨게 될 것입니다.
    카카오계정 로그인이 되어 있지않다면, 카카오계정 로그인 id/pw 창으로 이동할 것이구요.
예) 
https://kauth.kakao.com/oauth/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code&scope=talk_message 
  1. 사용자가 동의를 하면 redirect_uri로 code가 발급될 것이고 그 code로 토큰발급을 요청합니다.
  2. 새로 발급받은 access token으로 api를 다시 호출합니다.

rest api 로 동적동의를 진행하는 방법은 더 간소화 할 수는 없고, 위 절차대로 호출해주셔야 합니다.
native app을 서비스할 예정이시면 sdk에선 위 절차대로 동적동의 처리를 하고 있습니다.

2개의 좋아요

유저가 처음 로그인할때 동적동의를 해놓고
그 다음부터는 계속 동적동의 없이 보낼수 있나요?

안녕하세요. 카카오 입니다.

추가 동의가 필요한 경우, 사용자의 동의를 건너뛸 수 없습니다.

동적동의(추가항목 동의받기)와 관련해서는 아래 가이드 문서를 참고하시기 바랍니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#additional-consent

감사합니다.

카카오 계정 로그인은 인증 쿠키 값이 존재하는지 여부에 따라 달라집니다.

카카오 계정 로그인의 세션 정보는 기본적으로 24시간 동안 유효하기 때문에,

최초 동의 후, 추가적인 동적약관을 호출한다고 하더라도,
24시간 이내에 호출하는 것 이라면 계정 인증을 필요로 하지 않습니다.

카카오 계정 인증은 REST, Javascript, 네이티브 방식 모두 공통적으로 해당하는 내용입니다.

감사합니다.

thank you it help kme lot i stuck in same error almost work more than 8 hr to fix this