안녕하세요. 현재 안드로이드 공부를 하고 있는 학생입니다.
kotlin과 retrofit을 이용해서 네이버 api 연결 테스트를 해보고 있는데, 계속 인증실패하는 문구가 나오네요
ㅠㅠ
api key와 secret key는 몇번이나 확인을 해봐서 맞는데,권한 설정도 되있구요. 아래와 같은 문제가 발생하는 이유가 뭘까요? 몇시간째 구글링해보고 있는데, 해결이 안되네요. 도와주세요 ㅠㅠ
Response{protocol=h2, code=200, message=, url=https://openapi.naver.com/v1/search/news.json?query=%ED%85%8C%EC%8A%A4%ED%8A%B8}
{"errorMessage": "Not Exist Client ID : Authentication failed. (인증에 실패했습니다.)","errorCode": "024"}
코드는 다음과 같습니다.
data class
data class ResultGetSearchNews(
var lastBuildDate: String = "",
var total: Int = 0,
var start: Int = 0,
var display: Int = 0,
var items: List<Items>
)
data class Items(
var title: String = "",
var originallink: String = "",
var link: String = "",
var description: String = "",
var pubDate: String = ""
)
interface
interface NaverAPI {
@GET("v1/search/news.json")
fun getSearchNews(
@Header("X-Naver-Client-Id") clientId: String,
@Header("X-Naver-Client-Secret") clientSecret: String,
@Query("query") query: String,
@Query("display") display: Int? = null,
@Query("start") start: Int? = null
): Call<ResultGetSearchNews>
}
MainActivity
class MainActivity : AppCompatActivity() {
private val TAG = "apiLog"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val CLIENT_ID = "api키"
val CLIENT_SECRET = "시크릿키"
val retrofit = Retrofit.Builder()
.baseUrl("https://openapi.naver.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val api = retrofit.create(NaverAPI::class.java)
val callGetSearchNews = api.getSearchNews(CLIENT_ID, CLIENT_SECRET, "테스트")
callGetSearchNews.enqueue(object : Callback<ResultGetSearchNews> {
override fun onResponse(
call: Call<ResultGetSearchNews>,
response: Response<ResultGetSearchNews>
) {
Log.d(TAG, "성공 : ${response.raw()}")
resultText.setText(response.toString())
}
override fun onFailure(call: Call<ResultGetSearchNews>, t: Throwable) {
Log.d(TAG, "실패 : $t")
}
})
}
}