OneTime-Password向けFirebase導入


1. issue


One-Time-Passwordを実装するために、Firebaseの導入中にエラーが発生し、ユーザー名が定義されていないとみなされます.
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


Google検索結果.ルートディレクトリにenvファイルを置かないと、未定義のエラーが発生することがあるそうです.
otp>機能内.envファイルを移動し、問題が解決しました.
再配置時に今回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
導入時にcreate userはfirebaseで生成されます.

ちなみに、otpプロセスは以下の論理で行われます.
postmanがまずcreate userを要求することによってユーザ情報を生成する.

リクエストリクエストrequest userは、そのユーザーの存在を確認します.

Twillioを使用して、次の認証コードをアルファベットで送信します.

ユーザが適切なコードで応答するとtokenが発行されます.

ps.関連コードは私のFirebase-otp羽毛布団で見つけることができます.