从谷歌获取附近的地方时,api。获取错误提供的API密钥无效

时间:2018-06-09 11:32:54

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

我正在尝试获取附近的地方但收到错误提供的API密钥无效。

//来自console.developers.google.com

我确实从控制台开发人员创建了项目,为IOS创建了google place sdk并生成了API密钥,并且根据Key限制我选择了IOS Apps并提供了我的密钥限制。

所以我的问题在我的代码中有些不对劲或需要做更多设置的东西console.developers.google.com

func getNearByPlace(place:String){

    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()
}

2 个答案:

答案 0 :(得分:1)

您应该删除字符串中\(googleApiKey)后的尾随空格。 API密钥断开验证后的空白区域。

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

查看以下解释关键系统的文章

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

我希望这有帮助!

答案 1 :(得分:0)

不要忘记在应用程序中使用API​​_KEY(_:didFinishLaunchingWithOptions:)

GMSServices.provideAPIKey("YOUR_API_KEY") 

如果您使用Places API:

GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

只需参阅公开documentation

即可