Google Search Console API를 내 프로젝트와 연동하려면, 먼저 Google Cloud에서 프로젝트를 생성하고 검색창에 Google Search Console API를 검색한 후 사용 설정을 누른 뒤 관리 버튼을 눌러주자
관리 화면으로 들어왔으면, 우측 하단의 서비스 계정 관리를 누르고
상단에 보이는 서비스 계정 만들기를 눌러주자
이제 이름, 계정 ID를 설정하고 완료를 눌러준 뒤
서비스 계정이 생성되었으면 우측의 메뉴를 눌러 키 관리를 누르고
새 키 만들기를 선택한 후 JSON 형태로 다운로드 받고 프로젝트 안에 적절한 경로에 넣어주자, 이후 JSON 파일을 열어서 client_email에 들어간 내용을 복사하고
Google Search Console > 설정에 들어간 뒤 사용자 추가를 눌러주고 복사한 이메일을 넣어준 뒤 권한은 전체로 지정해서 넣어주면 끝이다
@RestController
class SearchConsoleController {
fun getSearchConsoleService(): SearchConsole {
val httpTransport = GoogleNetHttpTransport.newTrustedTransport()
val jsonFactory = GsonFactory.getDefaultInstance()
val credentialStream: InputStream = this::class.java.classLoader.getResourceAsStream("credential/search-insights.json")
?: throw FileNotFoundException("Resource not found: credential/search-insights.json")
val credential = GoogleCredentials.fromStream(credentialStream)
.createScoped(listOf("https://www.googleapis.com/auth/webmasters.readonly"))
return SearchConsole.Builder(httpTransport, jsonFactory, HttpCredentialsAdapter(credential))
.setApplicationName("Search Console API Kotlin")
.build()
}
@GetMapping("/test")
fun fetchSearchAnalyticsData() { // SearchAnalyticsQueryResponse
val service = getSearchConsoleService()
val request = SearchAnalyticsQueryRequest()
.setStartDate("2024-05-01")
.setEndDate("2024-06-17")
.setDimensions(listOf("query"))
val execute = service.searchanalytics().query("https://mycodegate.com/", request).execute()
println("")
}
}
이제 코틀린에서 Search Console API를 호출하는 과정인데 search-insights.json 부분은 아까 다운로드 받은 json 파일의 경로를 말하고, 그 외에는 사이트명을 주의해서 사용해줘야 하는데
사이트명이 https://mycodegate.com/ 이런 식으로 양식을 잘 지켜줘야 동작하기 때문에 /를 빼거나 www 를 추가해서 왜 안되지? 이런 상황이 발생하지 않도록 주의해주자.
Leave a Reply