인프런 커뮤니티 질문&답변

현석오님의 프로필 이미지
현석오

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

섹션 소개

네이버 api 요청 관련 질문 있습니다

작성

·

417

1

네이버 api 요청 관련 질문 있습니다


github:

https://github.com/hyunsokstar/naver-add-prototype

 

back:

npm run start:dev

 

front:

npm run dev

 

controller 에서  http://localhost:8000/naver_add  요청을 받으면 네이버 광고에  api 요청(https://naver.github.io/searchad-apidoc/#/guides) 을 날려서 응답 받은걸 다시 프론트로 보내려고 하는데요

 

참고 문서는  https://ukcasso.tistory.com/99 이고 

 

컨트롤러와 서비스는 다음과 같습니다.

https://github.com/hyunsokstar/naver-add-prototype/blob/main/backend/src/naver_add/naver_add.controller.ts

https://github.com/hyunsokstar/naver-add-prototype/blob/main/backend/src/naver_add/naver_add.service.ts

 

그런데 헤더 설정이 잘못되어서인지

 

import { NaverAddService } from './naver_add.service';

import { SuccessInterceptor } from './../common/interceptors/success.interceptor';

import { Controller, Get, Req, UseInterceptors } from '@nestjs/common';

// import CryptoJS from "crypto-js";

import * as CryptoJS from 'crypto-js'


var method = "GET";var api_url = "/keywordstool";var timestamp = Date.now() + '';const accessKey = "01000000000f85a84ea950600f3a5a2214f5f379afa3f09898cbf7a1699007c1167fe2e247"var secretKey = "AQAAAAAPhahOqVBgDzpaIhT183mv52WgZFJyJCX8PE87IzXJwg==";
var method = "GET";var timestamp = Date.now() + '';var secretKey = "YOUR_SECRETKEY";var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);hmac.update(timestamp + '.' + method + '.' + api_url);var hash = hmac.finalize();hash.toString(CryptoJS.enc.Base64);



@Controller('naver_add')@UseInterceptors(SuccessInterceptor)export class NaverAddController {
    constructor(        private readonly naverAddService: NaverAddService    ) { }
    @Get()    getNaverAddInfo() {        const api_key = process.env.API_KEY;        const secret_key = process.env.SECRET_KEY;        const customer_id = process.env.CUSTOMER_ID;
        const options = {            url: 'https://api.naver.com/keywordstool?hintKeywords=' + "skilnote" + '&showDetail=1',            headers: {                'X-Timestamp': timestamp, 'X-API-KEY': api_key,                'X-API-SECRET': secret_key, 'X-CUSTOMER': customer_id, 'X-Signature': hash.toString(CryptoJS.enc.Base64)            }        };        // const result = this.naverAddService.getNaverAddInfo(options).subscribe(        //     res => {        //         console.log(res);        //     });
        const result = this.naverAddService.getNaverAddInfo(options).pipe().subscribe()
        console.log("result : ", result);        // return result    }
}

 

요청 자체는 성공으로 출력 되지만

 

 

콘솔에 이런 에러가 발생 합니다.

 

http://www.skilnote-for-starter.shop/wm/myshortcut/trouble-shotting/1

혹시 해결 방법 알려주시면 감사요 그리고 혹시 멘토링 같은건 안해주시나요 주말이든 주중이든 채팅이나 직접 만나서든 배우고 싶습니다.

답변 3

0

안녕하세요 현석오님.
깃허브에 올려주신 코드와 올려주신 테스트 결과만으로 정확히 오류가 어디 있는지 확인하기 어렵습니다.

가장 크게 의심되는 부분은 api 호출 헤더를 작성해주는 부분에서, process.env.[KEY] 와 같은 형식으로 .env 파일에 있는 환경변수를 불러오는 과정에서 제대로 값이 불러와지지 않은 것 같습니다. 이 부분을 console.log로 한 번 확인해주시고, 그래도 해결되지 않는다면 다시 한 번 질문글로 작성해주시면 바로 다시 확인해보겠습니다. 감사합니다.

또한, API KEY와 SECRET KEY는 현석오님에게만 제공되는 키로, 공개된 웹에 해당 키를 노출시켰을 때 타인이 이를 악용할 수 있습니다. 질문글에서 해당 부분을 삭제하시고, 깃허브 레포지토리도 private으로 변경하시는 것을 추천드립니다.

0

현석오님의 프로필 이미지
현석오
질문자

http://www.skilnote-for-starter.shop/wm/myshortcut/naver-api-test/1
에서 봐주시면 감사하겠습니다.

 

0

윤상석님의 프로필 이미지
윤상석
지식공유자

안녕하세요 :)

사진이 안보이는데 다시 올려 주실 수 있나요???

현석오님의 프로필 이미지
현석오

작성한 질문수

질문하기