我正在尝试获取附近的地方但收到错误提供的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()
}
答案 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
即可