При поиске близлежащих мест из Google Места API.Получение ошибки Предоставленный ключ API недействителен - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь получить информацию о ближайших местах, но получаю сообщение об ошибке. Недопустимый ключ API.

// С console.developers.google.com

Я создал проект из консоли разработчика.Google размещает SDK для IOS, а также генерирует ключ API и в разделе «Ключи» я выбрал «Приложения для IOS» и предоставил свои «Ключи».

Итак, мой вопрос, что-то не так в моем коде или мне нужно выполнить некоторые дополнительные настройки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 голосов
/ 09 июня 2018

Вы должны удалить завершающий пробел после \(googleApiKey) в вашей строке.Пробел после ключа API нарушает проверку.

Кроме того, ключ API для веб-службы API Адресов должен отличаться от ключа API, который вы использовали в Maps iOS SDK, поскольку веб-службы не поддерживают ограничения приложений iOS.Веб-службы могут быть ограничены только IP-адресом вашего внутреннего сервера.Это означает, что вы должны смонтировать промежуточный сервер, который отправляет запросы в Google и передает ответы обратно в ваше приложение, чтобы защитить ваш ключ API или использовать незащищенный ключ, если вы вызываете веб-службу непосредственно из приложения.Последнее - плохая идея, потому что это недостаток безопасности.

Взгляните на следующую статью, в которой объясняется ключевая система

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

Надеюсь, это поможет!

0 голосов
/ 09 июня 2018

Не забудьте использовать свой API_KEY в приложении (_: didFinishLaunchingWithOptions:)

GMSServices.provideAPIKey("YOUR_API_KEY") 

А если вы используете Places API:

GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Просто обратитесь к общественности документация

...