在Flutterflow中限制Google Maps API密钥的正确方法

作者:API传播员 · 2026-01-14 · 阅读时间:4分钟
本文详细介绍了在FlutterFlow中限制Google Maps API密钥的正确方法,包括使用Places API、DistanceMatrix API和Geocode API,并探讨了浏览器密钥限制问题和平台特定密钥限制问题。文章提出了部署为Google Cloud Functions并结合VPC服务的解决方案,以提升应用安全性。

在FlutterFlow中限制Google Maps API密钥的正确方法

在开发FlutterFlow应用程序时,正确限制Google Maps API密钥是确保应用安全性的重要步骤。本文将分享如何在FlutterFlow中限制Google Maps API密钥,并探讨可能的解决方案。


使用的Google Maps API

在我的FlutterFlow应用中,我使用了以下Google Maps API:

  • Places API:用于FlutterFlow地点选择器和Google地图小部件。
  • **DistanceMatrix 使用Google Cloud Function)。
  • Geocode API:同样通过FlutterFlow自定义API调用(非私有;未使用Google Cloud Function)。

根据FlutterFlow的建议,我为每个API分别设置了三个独立的API密钥。


当前API密钥的使用方式

我在FlutterFlow的Google地图集成页面中为相关输入字段指定了三个API密钥:

  • Places APIGoogle Map小部件使用了相应的密钥。
  • DistanceMatrix APIGeocode API的自定义API调用使用了浏览器密钥。由于浏览器密钥目前未受限制,因此未绑定到任何特定平台或应用程序。

Google支持团队的建议

在向Google支持团队咨询后,他们建议通过以下方式限制API密钥的使用:

  1. 将iOS和Android密钥限制到相应的平台。
  2. 将浏览器密钥限制到以下URL:
    • https://*.run.app:用于测试模式下直接调用API时的引用URL。
    • https://*.herokuapp.com:通过FlutterFlow代理在测试模式下调用API时的引用URL。
    • https://*.frontflow.io:FlutterFlow相关的URL。

此外,在自定义API调用中,我将API密钥设置为变量,并在调用操作中根据平台(iOS、Android、Web)进行条件检查。


遇到的问题

尽管按照上述建议配置了API密钥限制,但仍然存在以下问题:

  1. 浏览器密钥限制问题:浏览器密钥的限制仅适用于通过Google Maps JavaScript SDK直接从网站调用的API。对于测试模式下的调用,正确的限制方式是指定允许调用的IP地址。然而,由于测试模式下的IP地址可能不是静态的,因此无法准确限制。

  2. 平台特定密钥限制问题:即使为iOS和Android平台设置了特定的密钥限制,调用仍然无法正常工作,原因尚不明确。


可能的解决方案

部署为云函数

目前,我认为最简单且最安全的解决方案是将这些API部署为Google Cloud Functions,并在FlutterFlow中使用“Private API”选项。这种方式的优点包括:

  • 所有请求可以使用一个统一的API密钥。
  • 可以通过Google Cloud Functions的权限管理进一步提高安全性。

然而,这种方法也存在一个问题:Google Cloud Functions的IP地址并非静态。为了解决这一问题,可以考虑以下两种方法:

  1. 使用外部服务为Google Cloud Functions分配静态IP地址。
  2. 根据Google VPC服务的文档,通过配置VPC网络实现静态IP。

部署为私有调用

我还尝试将API部署为私有调用,但由于云函数的IP地址未知,无法正确限制API密钥的使用。


结论

在FlutterFlow中限制Google Maps API密钥的使用并非易事,尤其是在涉及测试模式和自定义API调用的情况下。根据我的经验,将API部署为云函数并结合Google VPC服务可能是目前最安全的解决方案。

如果您有更简单或更有效的方法,欢迎分享您的经验!


原文链接

在Flutterflow中限制Google Maps API密钥的正确方法

原文链接: https://community.flutterflow.io/ask-the-community/post/correct-way-to-restrict-google-maps-api-keys-for-use-in-flutterflow-Pog6PU8IPF9ZvhK