네이버 GEOLOCATION API

유신·2020년 12월 24일
0

2020-12-23 어제는 네이버 api 를 프로젝트에 연동시키는법을 공부했다.
처음에는 api연동이 너무어려워서 블로그들을 찾아봤지만.
맘에드는 내용이 별로 없었따.
결국 api문서를 정독하면서 대충 사용법을 봤는데도
너무어려웠다...
그런데 찾다보니 api 예제가 있길래 바로 다운받아 테스트를 해봤는데 너무 잘됐따.
생각보다 연동하는법은 단순했다.

require('dotenv').config();

const axios = require('axios');
const CryptoJS = require("crypto-js");

const access_key = process.env.access_key; //발급받은 api Key 입력
const secret_key = process.env.secret_key;  //발급받은 Secret_key 입력

const requestMethod = "GET";
const hostName = 'https://geolocation.apigw.ntruss.com'
const requestUrl= '/geolocation/v2/geoLocation'
const list ={
  a:"aaaa"
};
const timeStamp = Math.floor(+new Date).toString();

  async function map(){
  const sortedSet = {};
  sortedSet["ip"] = "xxx.xxx.xxx.xxx"; //예시ip 
  sortedSet["ext"] = "t";
  sortedSet["responseFormatType"] = "json";

  let queryString = Object.keys(sortedSet).reduce( (prev, curr)=>{
    return prev + curr + '=' + sortedSet[curr] + '&';
  }, "");

  queryString = queryString.substr(0, queryString.length -1 );

  const baseString = requestUrl + "?" + queryString;
  const signature = makeSignature(secret_key, requestMethod, baseString, timeStamp, access_key);

  const config = {
    headers: {
      'x-ncp-apigw-timestamp': timeStamp,
      'x-ncp-iam-access-key' : access_key,
      'x-ncp-apigw-signature-v2': signature
    }
  }
    console.log(list);
    let a = await axios.get(`${hostName}${baseString}`, config) //내가 밖으로 내보내고 싶은값
    list.b = a.data;
    return a ;
  };

  map();

console.log("asdkjlasdlasd",list)

function makeSignature(secretKey, method, baseString, timestamp, accessKey) {
    const space = " ";
    const newLine = "\n";
    let hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);

    hmac.update(method);
    hmac.update(space);
    hmac.update(baseString);
    hmac.update(newLine);
    hmac.update(timestamp);
    hmac.update(newLine);
    hmac.update(accessKey);
    const hash = hmac.finalize();

    return hash.toString(CryptoJS.enc.Base64);
}


키를 발급 받은 뒤, 키값만 넣어주면 손쉽게 연동되는거 확인할 수 있었다.
geolocation 은
ip를 통해서 위치값을 가져온다.
ip값 을 입력한 뒤, axios 에서 위치 데이터를 가져온다

그런데 문제가 생겼다. 위치데이터를 가져왔지만... 프로젝트에 사용할 수 없다..

오늘은 데이터를 가져오는방법에 대해 알아봐야겠다..
profile
초보개발자

0개의 댓글