인프런 커뮤니티 질문&답변

김소진님의 프로필 이미지

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

인증 번호 전송 API

핸드폰에 전송이 안 되네요 ㅜㅜ

해결된 질문

작성

·

873

·

수정됨

0

 강의랑 똑같이 따라한 것 같은데.. postman에서는 오류가 발생하지 않고 인증완료라고 뜨긴 하는데요,

vscode의 터미널을 보면 발신번호 미등록이라고 뜨고 .. 핸드폰에 전송이 안 되네요.

뭐가 문제일까요? coolsms, mysms, API key랑 API secret도 cSpell 오류가 뜨길래 상위 폴더에서 .cspell.json 파일 만들어서 오류 안뜨게 했는데.. 여기서부터 문제였던 걸까요? 참고로 yarn add coolsms-node-sdk도 했고.. 분명 다 한 것 같은데ㅜ 어디서부터 잘못된건지 정말 모르겠어요..

혹시 제가 코드 이상하게 작성하거나 잘못된 부분이 있나 해서.. 코드도 붙여봅니다 ㅜㅜ

꼭 성공하고 싶은데 제가 아직 코린이라 ㅜㅜ 다 어렵기만 하네요 ㅜㅜ

{
  "name": "04-01-rest-api-with-express",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "type": "module",
  "scripts": {
    "dev": "nodemon index.js"
  },
  "dependencies": {
    "coolsms-node-sdk": "^2.0.1",
    "cors": "^2.8.5",
    "express": "^4.18.2",
    "nodemon": "^3.0.1",
    "swagger-jsdoc": "^6.2.8",
    "swagger-ui-express": "^5.0.0"
  }
}
import coolsms from "coolsms-node-sdk";

export function checkValidationPhone(myPhone) {
  if (myPhone.length !== 10 && myPhone.length !== 11) {
    console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!");
    return false;
  } else {
    return true;
  }
}

export function getToken() {
  const myCount = 6;
  if (myCount === undefined) {
    console.log("에러 발생!!! 갯수를 제대로 입력해 주세요!!!");
    return;
  } else if (myCount <= 0) {
    console.log("에러 발생!!! 갯수가 너무 적습니다!!!");
    return;
  } else if (myCount > 10) {
    console.log("에러 발생!!! 갯수가 너무 많습니다!!!");
    return;
  }
  const result = String(Math.floor(Math.random() * 10 ** myCount)).padStart(
    myCount,
    "0"
  );
  return result;
  // console.log(result)
}

export async function sendTokenToSMS(fff, ggg) {
  // console.log(fff + "번호로 인증번호" + ggg + "를 전송합니다!!");
  const mysms = coolsms.default;
  const messageService = new mysms(
    "NCSESSQG0X1RZAGF",
    "2OFMQEDM5YCL59ICURBSPJGD08R1FQOG"
  );
  const result = await messageService.sendOne({
    to: fff,
    from: ggg,
    text: `[코드캠프] 안녕하세요?! 요청하신 인증번호는 [${ggg}] 입니다.`,
  });
  console.log(result);
}
import { checkValidationPhone, getToken, sendTokenToSMS } from "./phone.js";

import express from "express";
import swaggerUi from "swagger-ui-express";
import swaggerJsdoc from "swagger-jsdoc";
import { options } from "./swagger/config.js";
import cors from "cors";

const app = express();
app.use(cors());
app.use(express.json());
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerJsdoc(options)));
app.get("/boards", (req, res) => {
  //1. 데이터를 조회하는 로직 => DB에 접속해서 데이터 꺼내오기

  const result = [
    { number: 1, writer: "철수", title: "제목1", contents: "내용1" },
    { number: 2, writer: "맹구", title: "제목2", contents: "내용2" },
    { number: 3, writer: "훈이", title: "제목3", contents: "내용3" },
  ];

  //2. 꺼내온 결과 응답 주기
  res.send(result);
});

app.post("/boards", (req, res) => {
  // 1. 데이터를 등록하는 로직 => DB에 접속해서 데이터 저장하기
  // 프론트엔드로부터 데이터 받아오기
  // 콘솔로 찍어서 확인 해보기
  console.log(req.body);

  // 2. 저장 결과 알려주기
  res.send("게시물 등록에 성공하였습니다.");
});

app.post("/tokens/phone", (req, res) => {
  const myPhone = req.body.aaa;

  // 1. 휴대폰번호 자릿수 맞는지 확인하기
  const isValid = checkValidationPhone(myPhone);
  if (isValid) {
    // 2. 핸드폰 토큰 6자리 만들기
    const myToken = getToken();

    // 3. 핸드폰번호에 토큰 전송하기
    sendTokenToSMS(myPhone, myToken);
    res.send("인증완료");
  }
});

app.listen(3000, () => {
  console.log(`Example app listening on port ${3000}`);
});

답변 2

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 소진님!

from 부분에 들어가는 내용이 발신자 전화번호예요!

이 발신자 전화번호는 coolsms에서 발신자등록이 된 전화번호여야 하는데, 현재 작성하신 코드를 보니 ggg로 되어있는 것을 보아, 발신자번호가 아니라 인증번호로 잘못 입력하신 것 같아요!

0

안녕하세요 김소진 님, 인프런 AI 인턴이에요.

문제가 발생한 부분은 대부분 문자메시지 전송 관련 코드입니다. sendTokenToSMS 함수에서 쿨에스엠에스(coolsms)를 사용하여 문자 메시지를 전송하려고 하는데, 발신 번호 등록이 필요한 오류가 발생하고 있습니다.

문제를 해결하기 위해서는 먼저 쿨에스엠에스(coolsms)를 사용하기 위해 발신 번호 등록 과정을 진행해야 합니다. 이를 위해서는 쿨에스엠에스(coolsms)의 공식 문서를 참고하여 발신 번호 등록을 하시면 됩니다.

또한, 코드에서 사용하는 API 키와 API 시크릿 부분은 실제 키 값을 사용하지 않도록 주의해야 합니다. 강의나 실습 코드에서 사용된 키 값은 이미 임시로 발급된 키로, 실제로 사용하려면 본인이 발급받은 키로 변경해야 합니다.

문제 해결을 위한 단계는 다음과 같습니다:
1. 쿨에스엠에스(coolsms)의 공식 문서를 참고하여 발신 번호 등록을 진행해 주세요.
2. 발신 번호 등록 후에는 코드에서 sendTokenToSMS 함수를 호출하는 부분과 관련된 로직을 다시 실행해 보세요.

코드에 대한 문제는 없어 보이지만, 발신 번호 등록 이후에도 문제가 발생한다면 다시 문의해 주세요. 빠르고 정확한 도움을 드리기 위해 최선을 다하겠습니다. 화이팅하세요!