728x90

[1탄] https://honeystorage.tistory.com/188?category=748845

[2탄] https://honeystorage.tistory.com/189?category=748845

 

1,2 탄에 이어서 포스팅을 진행해보겠습니다.

앞서 1,2탄에서는 선행 작업과 템플릿에 대해서 알아봤습니다.

 

이번에는 실제 예제코드를 통해 API요청 테스트를 진행해보도록 하겠습니다.

그 전에, 템플릿에 대해서 조금만 추가 설명을 하고자 합니다.

 

 

알림톡을 보낼때 내용이 한줄작성인 경우는 굉장히 드물것입니다.

그런데 줄바꿈을 하다보면, API요청 과정에서 또 오류를 만나게 되고는 합니다.

보통, javascript에서 일반 문자열과 변수를 섞어서 사용할때 "백틱"이라 불리는 그레이브엑센트를 쓰는데요.

만약에,

// 템플릿
오늘 점심메뉴는 #{ somethingfood }이었습니다.
정말 맛있었습니다.

------------------------------
// 잘못된 예제
const message = `
  오늘 점심 메뉴는 ${food}이었습니다.
  정말 맛있었습니다.
`;


// 잘못된 예제
const message = `
오늘 점심 메뉴는 ${food}이었습니다.
정말 맛있었습니다.
`;

// 올바른 예제
const message = `오늘 점심 메뉴는 ${food}이었습니다.
정말 맛있었습니다.`

 

템플릿에 대해서 감이 오시나요?

템플릿과 소스코드는 변수 부분을 제외하고는 정확하게 내용이 같아야지만 올바른 요청으로 인정됩니다.

자꾸만 에러가 난다면 꼭 템플릿과 코드를 옆에 두고 비교해보시기 바랍니다.

 

 

자, 본격적으로 소스코드 예제를 진행해보도록 하겠습니다.

NCP를 처음 사용하신다면 흔히 막히는 부분이 암호화 서명 관련 섹션입니다.

DOCS에 친절히 나와있지만, nodejs관련해서는 다소 불친절하기 때문이죠.

 

암호화 서명을 위한 예제코드를 살펴보겠습니다.

function makeSignature() {
  var space = ' '; // one space
  var newLine = '\n'; // new line
  var method = 'POST'; // method
  var timestamp = Date.now().toString(); // current timestamp (epoch)
  var accessKey = process.env.NAVER_ACCESSKEY; // access key id
  var secretKey = process.env.NAVER_SECRETKEY; // secret key
  const url2 = `/alimtalk/v2/services/${process.env.NAVER_CHANNEL_ID}/messages`;
  let message = [];
  let hmac = crypto.createHmac('sha256', secretKey);

  message.push(method);
  message.push(space);
  message.push(url2);
  message.push(newLine);
  message.push(timestamp);
  message.push(newLine);
  message.push(accessKey);
  return hmac.update(message.join('')).digest('base64').toString();
}

여기서 주로 살펴볼 부분은,

crypto / NAVER_ACCESSKEY / NAVER_SECRETEKY / NAVER_CHANNEL_ID 입니다.

 

1. crypto는 nodejs의 내장모듈은 crypto를 의미합니다.

const crypto = require('crypto'); 해주시면 됩니다.

 

2. NAVER_ACCESSKEY는 1탄에서 알려드린 "계정관리"에서 생성한 "API인증키"를 말합니다.

 

3.  NAVER_SCRETKEY "API인증키" 옆에 보이는 "Secret key"입니다.

 

4. NAVER_CHANNEL_ID는 NCP의 easy notification에 등록한 프로젝트에 보면 Biz message가 있죠? 열쇠모양을 누르면 해당 서비스의 id를 확인할 수 있습니다.

 

 

거의 다 됐습니다.

마지막으로 4탄에서는, 인증요청 작업을 API문서와 비교 작성해보며 마무리해보도록 하겠습니다.

728x90
반응형