2015-04-30 2 views
0

Я пытаюсь вызвать API Google Адресов, чтобы вернуть список ресторанов рядом со мной. Когда я вызываю это из браузера, он отлично работает. Однако, когда я вызываю это изнутри приложения iOS, которое я построил с использованием Ionic Framework, он терпит неудачу с ошибкой NULL данных, 0.Вызов API Google Адресов/поблизости от приложения iOS

Я исследовал довольно много, понял, что это проблема CORS. Я просмотрел документацию Google о том, как отправлять запросы GET для приложения iOS. Я использовал идентификатор пакета приложения для создания ключа и идентификатора клиента для своего приложения. Используя шаги здесь https://developers.google.com/accounts/docs/OAuth2InstalledApp#overview, я получил access_token, который я использовал в качестве параметра запроса так же, как упомянутые документы. Ничего не работает. Что происходит не так?

URL, который работает в браузере: https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=MyServerApplicationsKey&location=33.85463,-84.35870&rankby=distance&types=restaurant

URL, который не удается из IOS App: https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=MyiOSApplicationsKey&location=33.85463,-84.35870&rankby=distance&types=restaurant&access_token=MyToken

@plexer Я использую ключ сервера для вызова URL из браузера. Это работает, как уже упоминалось. Из приложения, если я использую этот ключ, я получаю следующую ошибку: {"data": null, "status": 0, "config": {"method": "GET", "transformRequest": [null], "transformResponse": [null], "url": "sameUrlThatWorksOnBrowser", "headers": {"Accept": "application/json, text/plain, /"}}, "statusText": ""}

+0

Вы используете функцию печени на устройстве? –

+0

Да, я. Как это связано? –

+0

Итак, я понял, что это связано с «списком разрешенных IP-адресов» в разделе «Ключ для серверных приложений». Это очень больно, поскольку мне нужно указать список всех IP-адресов, из которых будет поступать запрос ! Любой способ сделать эту работу для любого IP-адреса? –

ответ

0

API Google Places использует ключ открытого доступа к API, а не oAuth. Хорошей новостью является то, что с ними гораздо проще начать работу.

Следуйте указаниям, приведенным в разделе Проверка подлинности на this page, чтобы создать новый доступ Public API ключ, а затем включить этот ключ в параметре & для вашего приложения.

После нажатия кнопки «Создать новый ключ» выберите «Ключ сервера». Это немного странно, поскольку вы вызываете API из iOS, но он будет работать.

+0

Привет, plexer, я редактировал мой вопрос. Пожалуйста, смотрите. Благодаря! –

+0

Привет, Ajinkya, я не пробовал, помогает ли это. Поскольку Ionic поддерживает углы, эта директива помогает u http://angular-js.in/google-places-autocomplete/ –