참고 가이드 : https://api.ncloud-docs.com/docs/ko/ai-application-service-sens-smsv2
네이버 문자인증을 할려면 우선적으로 네이버 클라우드에 가입이 되어있어야한다.
네이버 가입을 했으면 마이페이지로 간다.
마이페이지 -> 계정관리
그러면 Access Key ID
와 Secret Key
가 보이는데 둘다 복사 해서 다른곳에 저장을 해둔다 .
Simple & Easy Notification Service
를 클릭한다.
그다음 우리는 SMS 할꺼라서 SMS
에 있는 Calling Number
를 클릭해준다.
발신번호 등록을 클릭한다.
밑에 서류인증 요청과 본인인증(SMS) 이 보인다. 본인이 원하는것을 선택하면 된다.
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;
import smsRouter from './routes/sms';
app.use('/sms', smsRouter);