确定 Google 地图 API 在运行时是否使用了无效密钥
Determine if Google Maps API is using an invalid key during runtime
我正在寻找一种方法来确定是否正在使用有效的谷歌地图API密钥。使用无效密钥时,我们会收到一条错误消息,指出谷歌 API 已被禁用。我想捕获该返回值,并确定是否根据该返回值执行地理编码函数。
就目前而言,当我们保存记录时,我们会查看地址是否已更改。如果有,我们将获取该地址的地理编码,并在成功/失败消息传回后,在保存记录之前继续处理。
禁用 API 后,代码将停止。什么都不返回 - 没有成功或失败。在这一点上,我们的代码停止了,因为我们依赖于返回,所以我们知道从那里开始。我们不是在寻找绕过许可的方法,只是在寻找一种确定 API 是否在运行时被禁用的方法。有什么想法吗?
我在 Web> Maps JavaScript API> Events(标题为"侦听身份验证错误")中找到了一些东西
如果要以编程方式检测身份验证失败(对于 示例自动发送信标)您可以准备回调 功能。如果定义了以下全局函数,它将是 身份验证失败时调用。
所以你只需要定义一个全局函数:
function gm_authFailure() { /* Code */ };
不幸的是,
没有实现的选项来检测禁用的 API。
去年我提出了一个功能请求,但我认为不会有什么事情发生。
两种可能的选项(可能还有更多):
当你使用地图时,通常API首先会尝试创建地图(一些元素将被添加到map容器中)。禁用 API 时,将删除这些元素。因此,当发生这种情况时,您可以执行某些操作(例如,设置一个指示禁用状态的变量):
document.getElementById('map-canvas')//map-container .addEventListener ('DOMNodeRemoved', function(e){ if(!this.children.length){ alert('the API has been disabled'); if(window.google && window.google.maps){ window.google.maps.disabled=true; } } }, false);
重写
alert
-方法以截获特定消息:(function(f){ window.alert=function(s){ if(s.indexOf('Google has disabled use of the Maps API for this application.') ===0){ if(window.google && window.google.maps){ window.google.maps.disabled=true; alert('the API has been disabled'); return; } } f(s); } })(window.alert)
在这两种情况下,您以后都可以使用 google.maps
的(自定义)disabled
-属性来检查 API 是否已禁用:
if(google.maps.disabled===true){
//execute alternative code
}
相关文章:
- API密钥使用和检查示例
- react.js中的密钥绑定
- JS对象密钥序列
- 似乎无法使用javascript从AWS 3S中删除密钥
- 加载两个具有相同父密钥名称的json文件
- 如何获取$data.Entity的密钥
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- CryptoJS和密钥/IV长度
- 基于api密钥的NodeJS web服务
- 输入密钥和firefox提示
- React Rails应用程序中动态子项的密钥分配问题
- 正在Javascript Cookie中设置重复密钥
- 通过localStorage中的密钥获取ID
- 从密钥中获取价值.JavaScript
- Javascript对象中的跨浏览器密钥查找性能
- 确定 Google 地图 API 在运行时是否使用了无效密钥
- Google Plus API-密钥无效
- 由于错误码:InvalidKeyOrUnauthorizedURLMapError,提供的Google API密钥无效
- Robotjs错误:指定的密钥代码无效
- 使用Google Places web API的Rails(密钥无效)