친구목록 가져오기 sdk를 테스트 하고싶은데요
아직 테스트 이기 때문에 권한 동의를 이용중 동의로 해놓고 제 친구목록을 받아오려 하는데요
friends는 이용중 동의받는 부분이 user.kakaoAccount?. 부분에 구현이 안되어있는거 같은데 어떻게 동의를 받나요?
안녕하세요
구현이 안되어있다는게 어떤 말씀이신지 이해를 못했네요ㅠㅠ
조금 더 자세한 설명 부탁드리겠습니다.
UserApiClient.instance.me { user, error ->
if (error != null) {
Log.e(TAG, "사용자 정보 요청 실패", error)
}
else if (user != null) {
var scopes = mutableListOf<String>()
if (user.kakaoAccount?.emailNeedsAgreement == true) { scopes.add("account_email") }
if (user.kakaoAccount?.birthdayNeedsAgreement == true) { scopes.add("birthday") }
if (user.kakaoAccount?.birthyearNeedsAgreement == true) { scopes.add("birthyear") }
if (user.kakaoAccount?.genderNeedsAgreement == true) { scopes.add("gender") }
if (user.kakaoAccount?.phoneNumberNeedsAgreement == true) { scopes.add("phone_number") }
if (user.kakaoAccount?.profileNeedsAgreement == true) { scopes.add("profile") }
if (user.kakaoAccount?.ageRangeNeedsAgreement == true) { scopes.add("age_range") }
if (user.kakaoAccount?.ciNeedsAgreement == true) { scopes.add("account_ci") }
if (scopes.count() > 0) {
Log.d(TAG, "사용자에게 추가 동의를 받아야 합니다.")
UserApiClient.instance.loginWithNewScopes(context, scopes) { token, error ->
if (error != null) {
Log.e(TAG, "사용자 추가 동의 실패", error)
} else {
Log.d(TAG, "allowed scopes: ${token!!.scopes}")
// 사용자 정보 재요청
UserApiClient.instance.me { user, error ->
if (error != null) {
Log.e(TAG, "사용자 정보 요청 실패", error)
}
else if (user != null) {
Log.i(TAG, "사용자 정보 요청 성공")
}
}
}
}
}
}
}
이 예제를 보고있는데 여기서 user.kakaoAccount?. 하고 friends에 관한 권한이 없네요… 이부분은 따로 권한을 받아오는 코드로 받아와서 처리해야 하나요?
그리고 팀원의 친구목록말고 제 친구목록을 받아오는 건 안되나요?
첨부해주신 코드에서 사용하는 UserApiClient.instance.me()
는 사용자 정보 가져오기 관련 메소드라서 해당 응답 클래스에는 friends
라는 property가 없습니다.
친구를 가져오는 예제는 친구 목록 가져오기 참고 부탁드리겠습니다.
친구 목록을 가져오기 위해서는 동의 항목 설정을 참고하여 ‘카카오 서비스 내 친구목록’ 동의 항목을 설정해야 합니다.
추가로 이 API는 사용 권한이 필요합니다.
앱에 사용 권한이 부여되기 전에는 팀 멤버를 대상으로만 동작하기 때문에 카카오톡 친구목록을 가져오고 싶으신 경우에는 카카오톡 사용 권한 신청을 참고해 사용 권한을 신청부탁드립니다.
현재 카카오 서비스 내 친구목록 을 이용중 동의로 설정하고
UserApiClient.instance.me { user, error ->
if (error != null) {
Log.d("mainActivity", "사용자 정보 요청 실패" + error)
} else if (user != null) {
var scopes = mutableListOf<String>()
// friendsAgree 는 카카오 서비스 내 친구목록 사용동의 여부를 가지고 있는 변수
if (friendsAgree != true) {
scopes.add("friends")
}
Log.d("mainActivity", "요청 개수" + scopes.count())
if (scopes.count() > 0) {
Log.d("mainActivity", "사용자에게 추가 동의를 받아야 합니다.")
UserApiClient.instance.loginWithNewScopes(context, scopes) { token, error ->
if (error != null) {
Log.d("mainActivity", "사용자 추가 동의 실패" + error)
} else {
Log.d("mainActivity", "allowed scopes: ${token!!.scopes}")
// 사용자 정보 재요청
UserApiClient.instance.me { user, error ->
if (error != null) {
Log.d("mainActivity", "사용자 정보 요청 실패" + error)
} else if (user != null) {
Log.d("mainActivity", "사용자 정보 요청 성공")
}
}
}
}
}
}
}
코드를 이용해서 friends 동의를 받은 상태인데요
D/mainActivity: 카카오톡 친구 목록 가져오기 실패ApiError(statusCode=403, reason=PermissionDenied, response=ApiErrorResponse(code=-5, msg=there are no assigned team members in your app., apiType=null, requiredScopes=null, allowedScopes=null))
이 오류가 나타납니다. 팀목록에 등록된 맴버면 저도 포함되는거 같은데 왜 오류가 발생할까요…?
app id와 사용 중인 개발자 계정이 어떻게 되시나요?
해당 API는 본인을 제외한 친구 목록을 가져오는 API라서 다른 계정 등록 후 재시도 부탁드려요.
현재 앱ID 594040에 dkdlfhqhtxm@hanmail.net 는 등록되어있습니다.
본인을 제외한 친구목록 이라는게
지금 제 계정으로 로그인 했는데 제 카카오톡 친구목록을 불러오는게 안된다는 말씀이신가요…? 그러면 제 카카오톡 친구목록은 어떻게 불러오나요?
카카오톡 친구 목록을 가져오기 위해서는 별도의 사용 권한 신청이 필요합니다.
테스트 용도로 본인을 제외한 등록된 다른 팀원의 목록을 제공하고 있습니다.
이전 댓글에 첨부한 링크 확인 부탁드리겠습니다.
넵 친절한 답변 감사합니다! 좋은 하루 되세요ㅎㅎ
죄송한데 질문하나 더 해도될까요? 팀원 등록해서 친구목록을 가져왔는데 팀원은 친구목록에 제가 뜨는데 저는 친구목록에 팀원이 뜨지않네요… 원래 owner는 친구 목록에 아무도 안뜨나요 아니면 제가 뭘 잘못한걸까요…?
친구목록을 조회할 수 있는 조건은 다음과 같습니다.
아래의 항목들 확인 부탁드리겠습니다.
- 제작/운영 중인 앱(사이트) 에 카카오 로그인한 사용자가 자신의 카카오톡 친구를 조회합니다.
- 로그인한 사용자의 카카오톡 친구도 앱(사이트)에 로그인 해야하고, 친구 목록 조회와 메시지 권한에 동의 해야 합니다.
✭ 동의하지 않으면 카카오톡 친구이더라도 친구 목록에 조회되지 않습니다.
- 팀멤버 추가하여 친구목록 조회 테스트 하기 체크 리스트
✓ 친구 목록 조회 API 로 조회할 팀멤버 등록
✓ 내 계정으로 카카오 로그인하고 추가항목 동의 받기
✓ 팀 멤버 계정으로 카카오 로그인하고 추가항목 동의 받기 (토큰 까지 받을 것)
좀 더 자세한 내용은 체크리스트 에 상세하게 나와있습니다.
감사합니다.