API密钥 浏览器API密钥在与此API一起使用时不能有引用者限制。

67

我正在尝试编写地理编码程序。我创建了 API 密钥,但当我将其添加到我的网站代码中时,什么也没有得到,但是当我不使用 API 时一切正常。 当我发送:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX

我收到了回复:

Browser API keys cannot have referer restrictions when used with this API.

如果我使用:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres" 

结果是正确的,但每天查询次数有限。

关键约束:引荐HTTP(Web)-设置为从中检索请求的域。启用Google Maps Geocoding API接口。

API密钥还需要在其他地方激活才能工作吗?

3个回答

109
看起来你可能是在服务器端进行API调用。我今天早些时候遇到了这个问题。由于你在API密钥上设置了引荐者限制,它将受到限制,并且只能在浏览器上执行Web服务API,包括地理编码API等。即使在请求标头中手动设置引荐者,也对我没有用。你可以在此页面上找到其他Web服务API:https://developers.google.com/maps/web-services/

重要提示:如果您使用任何具有引荐者限制的API密钥使用Web服务API,则您的请求将失败,并显示错误消息:“使用此API时,API密钥不能具有引荐者限制。” 您应该切换到使用服务器限制。

您需要创建一个单独的密钥来在服务器端使用。您可以通过使用IP地址限制访问而不是浏览器引用程序将限制更改为服务器限制

请参见Maps APIs FAQ中关于切换密钥类型为服务器限制密钥的此部分:https://developers.google.com/maps/faq#switch-key-type

或者,您可以继续使用浏览器密钥并在客户端(JavaScript)进行地理编码,然后通过ajax返回结果到后端。


但是,如果密钥没有任何限制,即在那里选择了“无”,那么当我们在服务器端使用该密钥时,是否会出现此错误? - Sanjay Kumar N S
6
我也一样。从浏览器中使用时出现了这个错误。 - demisx
1
@SanjayKumarNS 我之前也遇到过这种情况。我的密钥限制为“无”,然后它就正常工作了。 - Arvind Kumar
非常感谢!我在这个问题上卡住了。 - C0G1T0
4
这绝对是谷歌可能做的最谷歌的事情。如果您想进行任何类型的后端验证(例如,如果您想将某个地点的ID和名称保存在数据库中,而不使用第二个密钥验证其API,则必须制作2个API密钥)。太棒了,谷歌! - mike.void

7
如果服务器端地理编码不可行,您应该使用来自Google JavaScript API的地理编码器。您可以在该API上设置HTTP引用限制。
谷歌本身建议避免使用非JavaScript地理编码器API进行动态地理编码

该服务通常设计用于对已知地址(事先已知)进行地理编码,以便将应用程序内容放置在地图上; 该服务不是为了实时响应用户输入而设计的。 对于动态地理编码(例如,在用户界面元素内),请参阅Maps JavaScript API客户端地理编码器和/或Google Play服务位置API的文档。


1
这个问题发生在你将服务器密钥的引荐者设置为域名而非IP地址时,然后它就会显示这个消息-

API密钥带有引荐限制,不能用于此API

.

对于地理编码 API,请创建一个单独的 API 密钥,并使用 IP 地址限制该 API。

这对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接