0

Express および Passwordless モジュールを使用してパスワードレス認証をセットアップしています。すべてが機能しますが、1 つの問題で立ち往生しています。

配信方法の一部として、外部 API を使用してユーザーに SMS を送信しています。SMS が正しく送信されれば、すべて正常に動作します。ただし、SMS の送信に失敗した場合でもエラーは発生しませんが、API 呼び出しからの応答から、SMS が失敗したことがわかります。失敗した場合、API の応答は次のようになります。

{ 警告: [ { メッセージ: 'メッセージの送信に失敗しました', 番号: '91545454' } ], エラー: [ { コード: 51, メッセージ: '有効な番号が指定されていません' } ], ステータス: '失敗' }

ここで、node/express アプリで、API 応答にステータス = 失敗がある場合、それらを別のページに送信して、SMS が失敗したことをユーザーに伝えたいと思います。

私のコードは次のようになります。

passwordless.addDelivery(
    function(tokenToSend, uidToSend, recipient, callback) {

    var smscall = 'MY API CALL URL;
    needle.get(smscall, function(error, response) {
      if(error) {
          console.log(error);
      }
      if (!error && response.statusCode == 200) {
        console.log(response.body);
      }
      if(response.body.status == 'failure') {
        console.log('Failed');
        THIS IS WHERE I WOULD LIKE TO REDIRECT USER TO A DIFFERENT TEMPLATE OR RENDER A MESSAGE.
      }
      callback(error);
    });
});

requestToken コードは次のようになります。

router.post('/', passwordless.requestToken(function(user, delivery, callback) {
    callback(null, user);
    }, { failureRedirect: '/error' }),
    function (req, res) {
        res.render('verify', { uid: req.passwordless.uidToAuth });
    }
);
4

2 に答える 2

0

失敗した SMS ステータスを確認する res.render を呼び出すだけです。

passwordless.addDelivery(関数(tokenToSend、uidToSend、受信者、コールバック) {

var smscall = 'MY API CALL URL;
needle.get(smscall, function(error, response) {
  if(error) {
      console.log(error);
  }
  if (!error && response.statusCode == 200) {
    console.log(response.body);
  }
  if(response.body.status == 'failure') {
    console.log('Failed');
    return res.render('smsFailPage');
  }
  callback(error);
});

});

于 2016-08-22T12:19:56.000 に答える