네이버 api 요청 관련 질문 있습니다
516
投稿した質問数 53
네이버 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 이고
컨트롤러와 서비스는 다음과 같습니다.
그런데 헤더 설정이 잘못되어서인지
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으로 변경하시는 것을 추천드립니다.
프로젝트 환경 세팅할 때 최신 노드 버젼을 사용하시는 분들은 참고하셔도 좋을 것 같아요~
2
80
1
DTO에 대한 질문
1
87
2
백엔드 MVC에서 View의 역할은 무엇인가요?
1
93
2
추가 업데이트 관련 건
0
90
2
nest js 버전문제
0
79
2
mongdb 스키마 공식 문서와 형태가 다른 이유 궁금합니다.
0
103
1
라인 끝에 에러 표시(eslint) 때문에 구글 찾아 보니.
0
74
1
전체 고양이 조회 라우터 중 error.message 오류
0
67
1
캡슐화 추가 설명 중 단일책임원칙 관련 질문
0
104
0
42강 고양이끼리 소통 댓글 구현 중 Schema hasn't been registered for model 'comments' 에러 해결
0
82
1
채팅 이슈
0
133
1
모듈이 더 이상 지원하지 않는답니다
0
206
1
오류가 있습니다
0
106
1
import 에서 오류가 납니다
0
127
1
이런 오류가 나옵니다
0
100
1
에러가 발생합니다
0
109
1
프론트 에러 뜨는데 수정 안해주시나요
0
156
1
emit() broadcast.emit() 질문있습니다
0
101
1
서버연결이 안됩니다.
1
403
1
[PM2][ERROR] Command not found
0
520
1
S3에 업로드까지는 성공했는데 사진이 나오지 않습니다.
0
248
1
error_code : Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.ts(2339)
0
601
1
jwt를 따로 연습하고 있는데 env를 못읽는 것 같습니다.
0
322
2
Ec2로 안하시는 이유가 있을까요?
0
343
1

