문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.
Faq 목록 - 10. Android ( Faq 목록 입니다 ) 먼저 확인해주세요.
Android API 34, KAKAO SDK 2.16.0, AppId 911713
UserApiClient.instance.scopes 를 통해 권한을 가져오면 friends 스코프가 있는 걸로 나오는데
https://kapi.kakao.com/v1/api/talk/friends 를 사용해서 목록을 가져오려고 하면 -402로 스코프가 필요하다고 나오네요.
데이터가 꼬인 걸까요?
어떤 문제인지 확인해주시면 감사하겠습니다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
UserApiClient.instance.scopes { scopeInfo, error->
if (error != null) {
Logger.e("동의내역 확인 실패", error)
} else if (scopeInfo != null) {
Logger.d("동의 정보 확인 성공\n 현재 가지고 있는 동의 항목 $scopeInfo")
if (scopeInfo.scopes?.find { it.id == "friends" } != null) {
fetchFriendsInfo(sharedViewModel.userInfo.value!!.accessToken)
} else {
showDebugToast("친구 목록 가져오기 권한이 없습니다")
requestRequiredPermission()
}
}
}
}
private fun requestRequiredPermission() {
val scope = listOf("friends")
UserApiClient.instance.loginWithNewScopes(requireActivity(), scope) { token, error ->
if (error != null) {
showDebugToast("사용자 동의 받기 실패")
} else {
Logger.d("newToken: ${token.toString()}")
}
}
}
private fun fetchFriendsInfo(token: String) {
val client = OkHttpClient.Builder().build()
val request = Request.Builder()
.url("https://kapi.kakao.com/v1/api/talk/friends")
.addHeader("Authorization", "Bearer $token")
.get()
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
Logger.d("friends >> $e")
}
override fun onResponse(call: Call, response: Response) {
val data = response.peekBody(Long.MAX_VALUE).string()
Logger.d("friends >> $data")
}
})
}
현재 가지고 있는 동의 항목 ScopeInfo(id=*, scopes=[Scope(id=profile_nickname, displayName=닉네임, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=false), Scope(id=profile_image, displayName=프로필 사진, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=false), Scope(id=friends, displayName=카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함), type=PRIVACY, using=true, delegated=null, agreed=false, revocable=null), Scope(id=account_email, displayName=카카오계정(이메일), type=PRIVACY, using=true, delegated=null, agreed=true, revocable=false), Scope(id=gender, displayName=성별, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=true), Scope(id=age_range, displayName=연령대, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=true), Scope(id=birthday, displayName=생일, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=true), Scope(id=story_permalink, displayName=카카오스토리 프로필 URL, type=PRIVACY, using=true, delegated=null, agreed=true, revocable=true)])
2023-10-09 23:22:23.227 2284-3917 tag_debug D friends >> {"msg":"insufficient scopes.","code":-402,"api_type":"FRIENDS","required_scopes":["friends"],"allowed_scopes":["age_range","birthday","account_email","profile_image","gender","profile_nickname","story_permalink"]}
추가적으로 '동의하고 계속하기’를 눌러도 크롬창에서 아무런 반응이 없습니다.
이 문제와 혹시 관련이 있을까요? redirect url 관련하여 매니페스트에 등록한 부분도 누락된 게 없습니다