One-Time-Password를 위한 firebase deploy

Maliethy·2021년 2월 26일
0

1. issue

One-Time-Password를 구현하기 위해 firebase를 deploy하는 도중 username이 undefined로 인식되는 에러가 발생했다.

otp>functions>twilio.js

const twilio = require('twilio');
require('dotenv').config();

const accoutSid = process.env.ACCOUNTSID;
const authToken = process.env.AUTHTOKEN;

module.exports = new twilio.Twilio(accoutSid, authToken);

c:\Users\user\momo\wellwork\otp\functions>node twilio.js
undefined undefined undefined
c:\Users\user\momo\wellwork\otp\functions\node_modules\twilio\lib\rest\Twilio.js:132
    throw new Error('username is required');
    ^

Error: username is required
    at new Twilio (c:\Users\user\momo\wellwork\otp\functions\node_modules\twilio\lib\rest\Twilio.js:132:11)
    at Object.<anonymous> (c:\Users\user\momo\wellwork\otp\functions\twilio.js:7:18)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

2. solution

구글링 결과 .env파일을 root directory에 두지 않을 때 undefined에러가 발생하는 경우가 있다고 한다.
otp>functions 안으로 .env파일을 옮겼더니 문제가 해결되었다.

다시 deploy를 했을 때 이번에는 HTTP Error: 403, Unknown Error가 발생했다.

c:\Users\user\momo\wellwork\otp\functions>firebase deploy --project one-time-password-24b66
!  functions: package.json indicates an outdated version of firebase-functions.
Please upgrade using npm install --save firebase-functions@latest in your functions directory.

=== Deploying to 'one-time-password-24b66'...

i  deploying functions
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
+  functions: required API cloudbuild.googleapis.com is enabled
+  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (39.02 KB) for uploading
!  functions: Upload Error: HTTP Error: 403, Unknown Error

Error: HTTP Error: 403, Unknown Error

firebase CLI를

firebase logout

한 뒤

firebase login

를 하니 간단하게 해결되었다. 바뀐 값을 인식하지 못해서 문제가 발생했던 듯 하다.

c:\Users\user\momo\wellwork\otp\functions>firebase deploy --project one-time-password-24b66
!  functions: package.json indicates an outdated version of firebase-functions.
Please upgrade using npm install --save firebase-functions@latest in your functions directory.

=== Deploying to 'one-time-password-24b66'...

i  deploying functions
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
+  functions: required API cloudbuild.googleapis.com is enabled
+  functions: required API cloudfunctions.googleapis.com is enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (39.02 KB) for uploading
+  functions: functions folder uploaded successfully
i  functions: creating Node.js 12 function createUser(us-central1)...
+  functions[createUser(us-central1)]: Successful create operation. 

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/one-time-password-24b66/overview

deploy를 하면 다음과 같이 create user가 firebase에 생성된다.

참고로 otp과정은 다음과 같은 로직으로 진행된다.

postman을 통해 먼저 create user를 요청해 user정보를 생성하고

request user를 요청해 해당 user가 존재하는지 확인한 후

twilio를 이용해 다음의 인증 코드를 문자로 보내고

user가 알맞는 코드로 응답하면 token을 발급한다.

ps. 해당 코드는 저의 firebase-otp 깃헙 repo에서 확인할 수 있습니다.

profile
바꿀 수 있는 것에 주목하자

0개의 댓글