我一直在使用google maps sdk和places api完全正常工作。昨天我的代码运行得很好。但今天早上醒来,做了一些修改,然后遇到了一个问题的编译雪球,似乎很容易解决,但花了几个小时试图弄清楚发生了什么。我正在尝试开发一个iPhone应用程序。
我回去了,在开发者控制台中创建了一个“新项目” 重新生成一个新的iOS密钥。 在info.plist中输入新的捆绑包ID 在委托文件和url的搜索参数中输入新的api密钥。
我正在使用alamofire和swiftyjson来解析数据
但仍然遇到同样的问题。
2016-01-28 13:15:55.683适用于iOS版的Google Maps SDK:1.11.21919.0
{ “error_message”:“此IP,站点或移动应用程序无权使用此API密钥。从IP地址”myIPAddress“收到请求,空引用”, “结果”:[
] “status”:“REQUEST_DENIED”, “html_attributions”:[
] }
func downloadRestaurantDetails(completed: DownloadComplete) {
let URL_Search = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?"
let API_iOSKey = "My iOS API Key"
let urlString = "\(URL_Search)location=\(clLatitude),\(clLongitude)&radius=\(searchRadius)&types=\(searchType)&key=\(API_iOSKey)"
let url = NSURL(string: urlString)!
Alamofire.request(.GET,url).responseJSON { (response) -> Void in
if let value = response.result.value {
let json = JSON(value)
print(json)
if let results = json["results"].array {
for result in results {
if let placeIDs = result["place_id"].string {
self.placeIDArray.append(placeIDs)
}
}
}
}
completed()
}
}
答案 0 :(得分:5)
您的API密钥配置错误。
首先,您的问题在于Google Places API Web Service,它只能与Server keys一起使用,而不能与iOS密钥一起使用。您正在调用Web服务(https://maps.googleapis.com/maps/place/...
),因此iOS密钥和bundleID密钥限制在这里不起作用(并且可能会使事情混淆)。
因此,您需要按照https://developers.google.com/places/web-service/get-api-key上的说明操作,并在开发者控制台中启用“Google Places API Web服务”的服务器密钥(与“Google Places API for iOS”不同)。要在手机上有用,您可能不希望设置任何IP限制(并且IP限制是唯一可用于服务器密钥的类型)。在HTTP请求中使用该密钥。
其他任何内容都会出现REQUEST_DENIED错误。
答案 1 :(得分:0)
此错误听起来像是您生成了浏览器密钥而不是iOS密钥。尝试在云端控制台中生成iOS密钥,并确保将您的捆绑包ID列入白名单。