首页 > 解决方案 > 使用 Firebase 函数使用外部 api

问题描述

我正在尝试使用 Firebase Functions 使用外部 api,但是当我使用 OPTIONS 时,当我使用 GET 正常工作时,它会出现超时错误。我不想使用const request = require('request'); var rp = require('request-promise'); ,因为它们已经过时了。可能有什么问题,我等待同事的帮助。

const express = require('express');
const cors = require('cors');

const app = express();
// Permitir solicitações de origem cruzada automaticamente
app.use(cors({
    origin: true
}));
//app.use(cors());


app.get('/criarcliente', (req, res) => {

    let uri = "https://api.iugu.com/v1/customers?api_token=<mytoken>";
    let headers = {
        'Content-Type': 'application/json'
    }

    let body = {
        custom_variables: [{
            name: 'fantasia',
            value: 'Dolci Technology'
        }, {
            name: 'vendedor',
        value: ''
        }],
        email: 'teste1@teste1.com',
        name: 'John Dolci',
        phone: 9999999,
        phone_prefix: 66,
        cpf_cnpj: '00000000000',
        cc_emails: 'test@test.com',
        zip_code: '78520000',
        number: '49',
        street: 'Name Street',
        city: 'Guarantã do Norte',
        state: 'MT',
        district: 'Jardim Araguaia'
    }

    var options = {
        method: 'POST',
        uri: uri,
        body: body,
        headers: headers,
        json: true
    };

    const https = require('https');

    var req = https.request(options, (resp) => {
        let data = '';
        resp.on('data', (chunk) => {
            data += chunk;
        });
        resp.on('end', () => {
            var result = JSON.parse(data);
            res.send(result);
        });
        console.log("aqui");
    }).on("error", (err) => {
        console.log("Error: " + err.message);
    });


}); ```

标签: javascriptnode.jsfirebasegoogle-cloud-functions

解决方案


对于你的情况,我要指出两点。首先,您需要确认您在帐单中使用的是 Blaze 计划。正如官方定价文档中所阐明的那样,如果您不是并且正在尝试使用非 Google 拥有的服务,您将无法执行此操作,这将导致错误。

第二点是axios在您的应用程序中使用该库。我认为它最常与 Node.js 一起使用,以允许您访问 Cloud Functions 中的第三方应用程序 - 我想说它也很容易使用。您应该在此处找到有关将其与第三方 API 一起使用的完整示例。

总而言之,请查看您的定价,因为这是最常见的问题,并尝试使用axios,以确认您可以避免错误。


推荐阅读