React Native中Google Places API密钥授权失败求助
解决React Native中Google Places Autocomplete企业API密钥授权失败问题
错误原因分析
报错提示This IP, site or mobile application is not authorized to use this API key. Request received from IP address 116.50.84.117, with empty referrer,说明当前React Native库是直接通过HTTP请求调用Google Places Web API,而非调用Android/iOS原生SDK。这种情况下,Google会验证请求的公网IP,而非原生应用的包名/Bundle ID,导致原本针对原生应用配置的授权规则无法匹配。
解决方案
方案1:调整API密钥授权规则(适配Web API请求)
登录Google Cloud控制台,找到目标API密钥的配置页面,修改授权限制:
- 若允许放宽限制,可添加当前报错IP(116.50.84.117)到IP授权列表(注意:公网IP可能动态变化,此方法仅临时生效)
- 联系Google企业支持,确认是否允许为企业版密钥添加Web API相关的授权规则(比如针对移动设备的动态IP范围)
方案2:切换为原生SDK调用(推荐,安全且适配原有授权)
react-native-google-places-autocomplete支持调用原生Google Places SDK,此时请求会携带应用包名/Bundle ID,匹配原有原生应用的授权规则:
- 先确保Android和iOS项目已集成原生Google Places SDK:
- Android:在
build.gradle添加SDK依赖,将API密钥配置到AndroidManifest.xml的<meta-data>中 - iOS:通过CocoaPods引入SDK,将API密钥配置到
Info.plist的GMSPlacesAPIKey字段
- Android:在
- 修改RN组件配置,启用原生模式:
<GooglePlacesAutocomplete placeholder="Search" fetchDetails={true} onPress={(data, details = null) => { console.log(details.formatted_address); }} query={{ key: 'ENTERPRISE_LICENSED_GOOGLE_PLACES_API_KEY', language: 'en', }} // 启用原生SDK调用 usePlatformLibrary={true} // 可选:使用原生系统的搜索对话框 nativePlacesSearchDialog={true} onFail={error => console.error('Google Places Autocomplete Error:', error) } />
方案3:排查代理/网络环境
确认设备是否使用了代理、VPN或企业内网,导致请求经过第三方IP。若为企业内网IP,可将该IP段添加到API密钥的授权IP列表中。
验证步骤
- 修改配置后,重新构建并运行React Native应用
- 测试地址自动补全功能,确认报错消失
- 查看Google Cloud控制台的API密钥使用日志,验证请求符合授权规则
内容的提问来源于stack exchange,提问作者Rajeev Sahu
相关产品推荐
相关产品推荐

