친구, 메시지 API 사용 신청

1.문서에서 카카오톡 메시지, 메시지 API 검수 신청 방법을 반드시 확인하세요.

2.검수 방법

반드시 신청하시는 서비스에 API나 SDK가 연동되어 정상적으로 호출이 된 상태만 검수받을 수 있습니다.

  1. 해당 앱의 ‘[내 애플리케이션 > 설정 > 일반 > 비즈 앱 정보 > 사업자 정보 등록]’ 에서 비즈앱 신청을 해주세요.
    개인 비즈앱으로 신청 완료

  2. 신청에 사용한 사업자등록증 사본을 카카오 계정(@kakao)에 메시지로 전달해주세요.
    사업자 등록이 없어 개인 비즈앱으로 등록하였습니다.

  3. OWNER의 개발자 계정 (email), 앱 ID를 알려주세요.

    • OWNER의 개발자 계정은 ‘내 애플리케이션 > 설정 > 팀 관리’ 에서 확인하세요
      679748@naver.com
  4. 앱에서의 API를 활용하는 이유/방식을 알려주세요.

    • 친구 api를 함께 사용하실 계획이라면 알려주시기 바랍니다.
      친구들과 같이 공유하면서 일정을 만드는 웹 플랫폼을 개발 중 입니다.
      카카오로그인을 통해 해당 웹에 로그인 하여
      공유방을 만들고 일정을 만드는 것을 완료가 된다면 공유방을 만든 방장은 일정 공유하기를 통해
      카카오톡 친구들에게 만들어진 일정을 이미지 공유 받게 할려 합니다.
  5. 메시지 전송 API가 적용된 서비스를 저희가 직접 확인하기 위해, '로그인을 하는 시점부터 해당 서비스까지 이동하는 순서’를 상세히 알려주세요.
    -[누가 어떻게 로그인을 하는지]
    -[어떤 동작으로 친구 목록을 확인하는지]
    -[어떤 동작으로 메시지를 전송하는지]

    • 이미 오픈/운영중인 서비스는 iOS/Android 마켓 링크 혹은 웹 서비스 주소를 알려주세요.
      아직 오픈 된 서비스가 아닙니다.
  6. 테스트가 완료되어 서비스에 적용된(될) '실제 동작 화면 영상 혹은 캡쳐’를 첨부해주세요.
    현재 개발중인 웹은 자바 스프링부트를 활용해서 Swagger와 postman으로 테스트 해보고있습니다.

3.검수를 마친 후

검수를 마치면 "내 애플리케이션 > 설정 > 사용자 관리 > 동의항목 > 설정"에서 “카카오톡 메시지 전송” 접근권한 관리항목을 설정할 수 있게 됩니다.

안녕하세요,

실제 제작된 서비스를 대상으로 검수 가능하며, 테스트 성공 이력이 존재해야만 합니다.

검수 방법의 질문 항목들은 아래 블로그를 참고 하시어 작성 부탁드립니다.

카카오톡 메시지 API 사용 신청/통과 방법

혹시 테스트를 해볼려면 카카오디벨로퍼에 팀원을 추가하여 팀원에게는 친구 공유를 해볼 수 있는건가요?

403 Forbidden: “{“msg”:“insufficient scopes.”,“code”:-402,“api_type”:“FRIENDS”,“required_scopes”:[“friends”],“allowed_scopes”:[“account_email”,“profile_image”,“talk_message”,“gender”,“profile_nickname”]}”

현재 API를 요쳥했을때 발생하는 에러입니다

친구/메시지 API 는 권한 부여 전, 팀 멤버인 카카오 로그인 사용자를 대상으로만 테스트 하실 수 있습니다.

동의 항목 friends 이 동의되지 않은 사용자가 친구 API를 사용하였기에 발생한 오류 입니다.

API사용은 해당 동의 항목에 동의해야 합니다.

아래 문서를 참고 부탁드립니다

친구 api, 메시지 api 사용을 위한 체크 리스트 6
이해하기 | Kakao Developers 이해하기

제공하는 서비스에서 내 계정과 조회할 친구 쌍방이 로그인 및 추가항목 동의

이 부분에서 쌍방이 로그인 해야한다는건 팀원 으로 등록된 사람들이 웹사이트 내에서 로그인 하고 추가 항목 동의 와 토큰까지 발급 받아야지 친구목록이 조회 된다는 말인 가요?

public List<String> getFriendUUIDs(String accessToken) {
    String fUrl = friendsUrl;

    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.set("Authorization", "Bearer " + accessToken);
    HttpEntity<?> request = new HttpEntity<>(httpHeaders);

    ResponseEntity<FriendsDto> response = restTemplate.exchange(
            fUrl,
            HttpMethod.GET,
            request,
            FriendsDto.class
    );

    List<Friend> friends = response.getBody().getFriends();
    List<String> friendUUIDs = new ArrayList<>();

    if (friends != null) {
        for (Friend friend : friends) {
            friendUUIDs.add(friend.getUUID());
        }
    }

    return friendUUIDs;
}

FriendsDTO 는 API를 조회한 친구목록을 모을 List 형태이고
Friend 는 단순한 String UUID 입니다.
현재 코드에서 return 나오는 부분이 [] 아무것도 조회가 되지 않고있습니다…

여기서 쌍방 이여서 팀원 도 웹에 로그인하고 추가 동의까지 받아야 조회가 된다는건가요?

친구 정보 제공 조건
1. 친구가 앱과 연결된 상태일 것
2. 친구가 앱 연결 시 [카카오 서비스 내 친구 목록 제공] 동의 항목에 동의한 상태일 것
3. 친구가 숨김 또는 차단 친구가 아닐 것
4. 친구의 프로필 공개 설정이 공개 상태일 것
5. (친구 API 사용 권한이 없는 경우) 앱의 팀원일 것
메시지 발송자는 아래 조건 추가 필요
1. 발송자는 [카카오톡 메시지 전송] 동의 항목 동의한 상태일 것

카카오 로그인 및 필요한 동의 항목을 전부 동의 한 상태를 말합니다. 토큰 발급및 개인정보 조회를 최소 1회 하지 않은 사용자는 24시간 후 자동으로 연결이 끊깁니다.

image
image

이런식으로 첫 동의를 받고 친구목록을 조회 하려 할 때 한번 더 동의를 받고 개인정보 조회를 최소 1번 해야 하는 것인가요?

아닙니다.

개인정보 조회는 다른 의미로 설명 드렸습니다.

친구/메시지API는 서비스 내 사용자를 대상으로 합니다.
서비스 내 사용자는 카카오 로그인하여 앱과사용자가 연결이 유지된 상태를 의미 합니다.

카카오 로그인 및 접근 토큰 발급을 하면 앱과 사용자가 연결이 되고, 이는 카카오 계정 페이지의 연결된 서비스 관리에서 확인할 수 있습니다.

다시 돌아가 친구/메시지 API는 앱과 사용자가 연결이 유지되어 있어야 하는게 첫번째 조건입니다.
카카오 로그인 후, 최소 1회는 사용자 정보 가져오기 API를 호출해야만 유지가 되됩니다.

다만, 이는 사용자가 로그인 할 때 마다 호출을 의미하지 않습니다. 사용자가 서비스에 최초 로그인 시, 한번을 의미 합니다.


[카카오 서비스 내 친구 목록 제공] 동의 항목은 권한 부여 전에는 이용중 동의로만 제공되기에 로그인 후, 권한 필요 시점에 다시 동의 받아야만 합니다.

해당 동의 항목은 권한을 획득 하더라도 선택 동의 항목으로만 제공되기 때문입니다.

선택 동의 항목은 사용자가 언제든지 카카오 계정 페이지에서 철회 할 수 있습니다.
즉, 사용자가 동의 하였더라도 권한 필요 시점에는 동의하지 않은 상태가 될수 있습니다.

때문에, 권한 필요시점에 권한이 없는 경우 다시 동의 받도록 해야하며 이러한 로직이 서비스측에 구현되어 있어야 합니다.

<200,{“elements”:[],“total_count”:0,“after_url”:null,“favorite_count”:0}
현재 리턴을 전부 없이 나오는데 확인해봐야 할 부분이 어떤게 있을까요?

친구 정보를 조회하는 사용자와 대상자가 모두 위의 친구 정보 제공 조건을 모두 만족하는지 확인 부탁드립니다.

또한, 친구 목록의 경우 10분의 응답 캐시가 있기에 조회 후, 대상자가 가입 및 동의 한 경우라면 목록에 바로 노출되지 않을 수 있습니다.