ios - 从 google places api 获取附近的地方。收到错误提供的 API key 无效

标签 ios google-maps google-places-api swift4

我正在尝试获取附近的地点,但出现错误提供的 API key 无效。

//来自console.developers.google.com

我确实从控制台开发人员创建了项目,为 IOS 启用了 google places sdk,还生成了 API key ,并且从 key 限制中我选择了 IOS 应用程序并提供了我的 key 限制。

所以我的问题是我的代码有问题或者需要做一些更多的设置 console.developers.google.com

func getNearByPlace(地点:字符串){

    var strGoogleApi = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=53.2734, -7.778320310000026&radius=50000&keyword=\(place)&sensor=true&key=\(googleApiKey) "
    strGoogleApi = strGoogleApi.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!

    var urlRequest = URLRequest(url: URL(string: strGoogleApi)!)
    urlRequest.httpMethod = "GET"

    let task = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
        if error == nil {
            let jsonDict = try? JSONSerialization.jsonObject(with: data!, options: .mutableContainers)
            print("Json == \(jsonDict!)")
        } else {

        }
    }
    task.resume()
}

最佳答案

您应该删除字符串中 \(googleApiKey) 之后的尾随空格。 API key 后的空格会破坏验证。

此外,Places API 网络服务的 API key 必须不同于您在 Maps iOS SDK 中使用的 API key ,因为网络服务不支持 iOS 应用程序限制。 Web 服务只能通过您的后端服务器的 IP 地址进行限制。这意味着您应该安装一个中间服务器,该服务器向 Google 发送请求并将响应传回您的应用程序,以保护您的 API key ,或者如果您直接从应用程序调用 Web 服务,则使用未 protected key 。后者是一个坏主意,因为它是一个安全漏洞。

看看下面这篇解释关键系统的文章

https://developers.google.com/maps/faq#keysystem

希望对您有所帮助!

关于ios - 从 google places api 获取附近的地方。收到错误提供的 API key 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773835/

相关文章:

objective-c - zbar批量二维码扫描

iOS 应用程序没有包含 .app 的构建目录 - 用于二进制上传

ios - responseObject 不是 JSON,而是 AFHTTPRequestOperationManager 的 NSInLineData

google-maps - Google Maps Tracks - 跟踪路线

html - Chrome 自动填充涵盖了 Google Maps API v3 的自动完成功能

ios - 找不到 'GMSAutocompleteViewControllerDelegate' 的协议(protocol)声明?

ios - 谷歌地图多个圆圈

ios - 'tm' 的定义必须在需要之前从模块 'Darwin.C.time' 导入

javascript - 在 Rails 的 Gmaps 中默认打开 infoWindow

ios - 如何使用 google Api 查找我周围的地方