谷歌的地方为iOS空推荐人

时间:2016-01-28 21:20:36

标签: ios swift google-maps debugging google-places-api

我一直在使用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”:[

     

]   }

enter image description here

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

    }
}

2 个答案:

答案 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列入白名单。