naver sms 문자 인증

BackEnd_Ash.log·2021년 9월 5일
0

typescript

목록 보기
16/17

참고 가이드 : https://api.ncloud-docs.com/docs/ko/ai-application-service-sens-smsv2

네이버 문자인증을 할려면 우선적으로 네이버 클라우드에 가입이 되어있어야한다.

📌 네이버 가입

네이버 가입을 했으면 마이페이지로 간다.

✅ Access Key & Seret Key

마이페이지 -> 계정관리

그러면 Access Key IDSecret Key 가 보이는데 둘다 복사 해서 다른곳에 저장을 해둔다 .

✅ SERVICE_ID

Simple & Easy Notification Service 를 클릭한다.

그다음 우리는 SMS 할꺼라서 SMS 에 있는 Calling Number 를 클릭해준다.

발신번호 등록을 클릭한다.

밑에 서류인증 요청과 본인인증(SMS) 이 보인다. 본인이 원하는것을 선택하면 된다.

📌 routes/sms.ts

import * as express from 'express';
import { Request, Response } from 'express';
import * as CryptoJS from 'crypto';
import axios from 'axios';

const router = express.Router();

async function send_message(phone:any){
  const scretKey = process.env.SECRET_KEY as string;
  const accessKeyId = process.env.ACCESS_KEY_ID as string;
  const uri = process.env.SERVICE_ID as string; 

  const user_phone_number = phone;
  const date = Date.now().toString();

  const method = "POST";
  const space = " ";
  const newLine = "\n";
  const url = `https://sens.apigw.ntruss.com/sms/v2/services/${uri}/messages`;
  const url2 = `/sms/v2/services/${uri}/messages`;

  const hmac = CryptoJS.createHmac('sha256', scretKey);
  hmac.update(method);
  hmac.update(space);
  hmac.update(url2);
  hmac.update(newLine);
  hmac.update(date);
  hmac.update(newLine);
  hmac.update(accessKeyId);
  const signature = hmac.digest('base64');

  const body = {
    type: "SMS",
    countryCode: "82",
    from: "01079798282",//"발신번호기입",
    content: "naver_sms_test", // 인증번호
    messages: [
      { to: `${user_phone_number}`, }],
  }

  const options = {
    headers: {
      "Contenc-type": "application/json; charset=utf-8",
      "x-ncp-iam-access-key": accessKeyId, // accessKey 
      "x-ncp-apigw-timestamp": date,
      "x-ncp-apigw-signature-v2": signature, 
    },
  };

  const axios_response = await axios.post(url,body,options)
  return axios_response;
}

router.get('/:phone', async (req:Request, res:Response, next) => {
  try {
    const paramObj = req.params;
    send_message(paramObj.phone);
    return res.send("complete!");
  } catch (err) {
      console.error(err);
      return next(err);
  }
});

export default router;

✅ index.ts

import smsRouter from './routes/sms';
app.use('/sms', smsRouter);
profile
꾸준함이란 ... ?

0개의 댓글