response=ApiErrorResponse(code=-401, msg=android keyhash mismatched!
키해시 등록을 안했기 때문에 이런 문제가 발생한것입니다.
해결방법
[내 애플리케이션] > [플랫폼] > [Android 플랫폼 등록]을 선택 후 키해시를 등록해주세요.
*참고
키해시 찾는법
var keyHash = Utility.getKeyHash(this);
Log.d("KeyHash: ",keyHash);
정상작동하는 것을 볼 수 있습니다.
Main 전체 코드
package com.example.myapplication
import android.content.ActivityNotFoundException
import android.content.ContentValues.TAG
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.kakao.sdk.common.KakaoSdk
import com.kakao.sdk.common.util.KakaoCustomTabsClient
import com.kakao.sdk.common.util.Utility
import com.kakao.sdk.link.LinkClient
import com.kakao.sdk.link.WebSharerClient
import com.kakao.sdk.template.model.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
KakaoSdk.init(this,"5a743572664bf3133faca2키해시부분");
var keyHash = Utility.getKeyHash(this);
Log.d("KeyHash: ",keyHash);
val defaultFeed = FeedTemplate(
content = Content(
title = "오늘의 디저트",
description = "#케익 #딸기 #삼평동 #카페 #분위기 #소개팅",
imageUrl = "http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
itemContent = ItemContent(
profileText = "Kakao",
profileImageUrl = "http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
titleImageUrl = "http://mud-kage.kakao.co.kr/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
titleImageText = "Cheese cake",
titleImageCategory = "Cake",
items = listOf(
ItemInfo(item = "cake1", itemOp = "1000원"),
ItemInfo(item = "cake2", itemOp = "2000원"),
ItemInfo(item = "cake3", itemOp = "3000원"),
ItemInfo(item = "cake4", itemOp = "4000원"),
ItemInfo(item = "cake5", itemOp = "5000원")
),
sum = "Total",
sumOp = "15000원"
),
social = Social(
likeCount = 286,
commentCount = 45,
sharedCount = 845
),
buttons = listOf(
Button(
"웹으로 보기",
Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Button(
"앱으로 보기",
Link(
androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
)
)
)
)
// 피드 메시지 보내기
// 카카오톡 설치여부 확인
if (LinkClient.instance.isKakaoLinkAvailable(this)) {
// 카카오톡으로 카카오링크 공유 가능
LinkClient.instance.defaultTemplate(this, defaultFeed) { linkResult, error ->
if (error != null) {
Log.e(TAG, "카카오링크 보내기 실패", error)
}
else if (linkResult != null) {
Log.d(TAG, "카카오링크 보내기 성공 ${linkResult.intent}")
startActivity(linkResult.intent)
// 카카오링크 보내기에 성공했지만 아래 경고 메시지가 존재할 경우 일부 컨텐츠가 정상 동작하지 않을 수 있습니다.
Log.w(TAG, "Warning Msg: ${linkResult.warningMsg}")
Log.w(TAG, "Argument Msg: ${linkResult.argumentMsg}")
}
}
} else {
// 카카오톡 미설치: 웹 공유 사용 권장
// 웹 공유 예시 코드
val sharerUrl = WebSharerClient.instance.defaultTemplateUri(defaultFeed)
// CustomTabs으로 웹 브라우저 열기
// 1. CustomTabs으로 Chrome 브라우저 열기
try {
KakaoCustomTabsClient.openWithDefault(this, sharerUrl)
} catch(e: UnsupportedOperationException) {
// Chrome 브라우저가 없을 때 예외처리
}
// 2. CustomTabs으로 디바이스 기본 브라우저 열기
try {
KakaoCustomTabsClient.open(this, sharerUrl)
} catch (e: ActivityNotFoundException) {
// 인터넷 브라우저가 없을 때 예외처리
}
}
}
}
참고 링크
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android-v1
https://developers.kakao.com/docs/latest/ko/message/android-link
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 예외 발생 try catch 와 throw 그리고 throws의 비교 정리 (0) | 2022.05.16 |
---|---|
[Android ] 카카오톡 메시지 링크 보내기 초기 설정하는 방법 (0) | 2022.05.11 |
[Android java] Dialog에서 setProgressDrawable 하는 방법 (Context문제) (0) | 2022.04.27 |
Java Singleton 패턴이란? (feat. 스프링) (0) | 2022.04.20 |
[Android java] nullPointerException오류 실수원인 참고 (0) | 2022.04.19 |