firebase 从云函数创建带有头和响应的http请求

np8igboo  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(146)

我目前正在开发一个flutter应用程序,它可以向外部服务发送一些http请求,但实际上,我在应用程序中保留了一些API密钥,我想使用云函数来保护它们。我如何创建一个函数来执行这样的操作?这是我实际从应用程序发出的Stripe请求。

Future<Customer?> createCustomer(String userId) async {
    final String url = 'https://api.stripe.com/v1/customers';
    Map<String,String> headers = {
      'Authorization': 'Bearer <API_KEY_HERE>',
      'Content-Type': 'application/x-www-form-urlencoded'
    };
    var response = await _client.post(
      Uri.parse(url),
      headers: headers,
      body: {'name': "test", "metadata[userId]": userId},
    );
    final decodedResult = json.decode(response.body);
    log.info(decodedResult);
    if (response.statusCode == 200) {
      try {
        final customer = Customer.fromMap(decodedResult);
        currentCustomer = customer;
        return customer;
      } catch (e) {
        log.error(e.toString());
        return null;
      }
    } else {
      return null;
    }
  }
avwztpqn

avwztpqn1#

您可以很好地进行云计算,从云函数调用API,例如使用axios库。
但是,由于我们使用Node.js的Admin SDK为Firebase编写云函数,因此我建议使用Stripe Node.js API(此链接指向customers.create方法)。
您可以通过任何类型的云函数执行此操作,例如,您可以从应用调用的可调用函数,也可以通过后台触发的函数(例如,在Firestore集合中创建新客户文档时)执行此操作。
下面对SO的搜索将返回许多代码示例:https://stackoverflow.com/search?q=Firebase+Cloud+Functions+stripe

相关问题