Google Maps API密钥限制问题:Android和iOS设置限制时出错
问题原因
你配置的Android包名+SHA-1、iOS Bundle ID密钥限制,仅对Google Maps官方原生SDK(Android/iOS平台)的调用生效。而你当前是通过fetch直接发起HTTP请求调用Geocoding API,这种纯HTTP请求场景和原生平台限制不匹配,因此被Google权限校验拦截,触发报错。
解决方案
方案1:调整API密钥限制类型(适配HTTP直接调用)
如果坚持用纯HTTP请求方式,需要修改Google Cloud控制台中该密钥的限制规则:
- 切换为HTTP引用限制(HTTP referrers)
- 根据实际场景添加允许的来源:
- 若为Web应用,添加你的网站域名(如
https://your-app-domain.com/*) - 若为原生App内嵌WebView,可尝试添加App对应的自定义Scheme或关联域名,但这种方式安全性较低,不推荐
- 若为Web应用,添加你的网站域名(如
方案2:改用官方原生SDK(推荐)
既然你针对Android和iOS平台开发,更建议使用Google Maps官方原生Geocoding SDK,能完美匹配你已配置的包名/Bundle ID+SHA-1限制:
- Android:使用
com.google.android.libraries.maps:maps依赖中的Geocoder类,或Geocoding API原生客户端 - iOS:使用
GoogleMaps框架中的GMSGeocoder类
原生SDK会自动处理请求签名验证,无需手动拼接HTTP请求,安全性更高,也符合Google API使用规范。
额外排查点
- 确认限制规则无拼写错误:Android包名、SHA-1指纹,iOS Bundle ID必须和App实际签名信息完全一致
- 检查API密钥已启用Geocoding API权限(Google Cloud控制台API库中确认该API已开启)
内容的提问来源于stack exchange,提问作者Bloom Flora
相关产品推荐
相关产品推荐

