web-dev-qa-db-ja.com

Firebaseのクラウド機能-getaddrinfo ENOTFOUND

Paypal-node-SDK を使用してPaypalのAPIにリクエストを送信しようとしています

exports.requestPayment = functions.https.onRequest((req, res) => {
    return new Promise(function (fullfilled, rejected) {
        Paypal.payment.create(create_payment_json, {}, function (error, payment) {
            if (error) {
                rejected(error);
            } else {
                console.log("Create Payment Response");
                console.log(payment);
                res.status(200).send(JSON.stringify({
                    paymentID: payment.id
                })).end();
                fullfilled(payment);
            }
        });
     });
});

しかし、私は常にエラーが発生しています:

Error: getaddrinfo ENOTFOUND api.sandbox.Paypal.com api.sandbox.Paypal.com:443
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)

私が試したこと:

  1. ENOTFOUNDまだ完全に異なるホストにリクエストを送信しています
  2. cors(req,res, ()=>{...})でリクエストをラップする
  3. ホストの前にhttps://を追加

何が問題ですか?

44
user47376

外部のAPIリクエストを行うには、有料プランが必要です。

FirebaseのBlazeプラン(従量制)には、Cloud Functionsの無料の割り当てがあります。 https://firebase.google.com/pricing/

105
James Daniels

管理者の初期化にサービスアカウントを含める必要があります。これは私のために同じ問題を修正しました

0
EngrEric