【问题标题】:Google Maps API error: RefererNotAllowedMapError on play storeGoogle Maps API 错误:Play 商店中的 RefererNotAllowedMapError
【发布时间】:2026-02-18 17:15:01
【问题描述】:

网上有很多答案,但我还是傻到自己破解:(。

我有一个 Ionic 混合应用程序(Ionic、Angular 和 Visual Studio)。开发几乎完成并且工作正常。我已经使用 .keystore 证书签署了我的应用程序。我还在 Google Console 中生成了一个 API 密钥,并限制了 HTTP Referrers (Web Site)

在我的本地(开发环境)上,它停止工作。所以我添加了http://localhost:4000/index.html#find(甚至localhost)作为API 密钥的引用者。这解决了问题,现在可以正常工作了。

但是我的应用程序无法在 android 设备上运行。我不确定那里的引荐来源网址应该是什么。作为试用,我使用 Visual Studio 调试了我的设备。以下是我跟踪的错误。

Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error
Your site URL to be authorized: file:///android_asset/www/index.html#find

但是,添加 file:///android_asset/www/index.html#find 作为推荐人并不能解决问题。对我来说,它看起来像预期的那样,因为它们将原始文件指向我的系统(因为我正在调试)。那么,在我将应用添加到 Play 商店后,让所有设备都能正常工作的价值应该是什么?

它必须来自manifest.xml 还是我的应用项目?还是我需要在Google Play Console 的某处提及这一点?有人可以指导我吗?

【问题讨论】:

    标签: android google-maps google-maps-api-3 ionic-framework


    【解决方案1】:

    云开发者控制台目前不支持 file:/ 引荐来源网址。

    您可以考虑两种选择:

    1. 在没有 HTTP 引用限制的情况下使用不同的 API 密钥
    2. 购买高级计划,其中文件:/ 推荐人支持客户端 ID。

    在公共问题跟踪器中有一个 issue 9996 与具有 file:/// 协议的引荐来源网址有关。我建议在该问题上加注星标以表达您的兴趣并获得进一步的更新。

    更新

    好消息,Google 增加了对 file:/ 引荐来源网址的支持。您可以在文档中看到以下文字

    file:// referers need a special representation to be added to the Key restriction. The "file:/" part should be replaced with "__file_url__" before being added to the Key restriction. For example, "file://path/to/" should be formatted as "__file_url__/path/to/*". After enabling file:// referers, it is recommended you regularly check your usage, to make sure it matches your expectations

    https://developers.google.com/maps/documentation/javascript/get-api-key#key-restrictions

    【讨论】:

    • 我的应用是免费的,没有广告,所以我宁愿不选择高级版。关于Use a different API key without HTTP referrer restrictions,你的意思是我应该使用None 限制。 1. 当我使用密钥库签署我的应用程序时,是否可以使用None? 2. 安全吗?我可以使用 android 作为限制(或者 android 仅适用于本机应用程序)吗? 3. 之前使用None,由于签署了我的应用程序但没有将Sha1 密钥附加到API 密钥,我无法在地图上加载我的标记。
    • 您授权了 Maps Javascript API,因此 Android 应用限制不应该起作用。 None 应该与 Maps JavaScript API 一起使用,但它并不安全,因为您的 API 密钥已在代码中公开。所以 9996 是应该解决这个安全漏洞的问题。
    • 对于 ios,file 对我不起作用。我需要添加 * 作为推荐人(基本上允许任何 url)。
    • @xomena - 你在这里引用了我的另一个问题作为可能的重复。为我的 ionic/cordova 应用程序阅读此内容并重新阅读谷歌文档 - 将我的 api 密钥锁定为只能由我的应用程序使用,这是否意味着我需要使用匹配的 sha-1 向我的应用程序添加一些文件指纹什么的?如果是这样,文件的格式是什么,文件在应用程序项目中的位置?还是我还是不明白这个……
    • @xomena - 据此,Maps Javascript API 只能通过 HTTP referer 锁定。还是我错过了什么? developers.google.com/maps/faq#keysystem