Пользовательский поиск Google: ошибка 403 в iOS

пользовательский поиск Google возвращает эту ошибку 403 из моего приложения iPhone 7.1. Это ответ при запуске в симуляторе:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
   }
  ],
  "code": 403,
  "message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."
 }
}

есть ли недостаток в шагах ниже? Я хотел бы установить рабочий процесс установки CSE, специфичный для приложений iOS. Скриншоты на каждом шаге, надеюсь, помогут и не запутать!

  1. создайте пользовательскую поисковую систему (CSE) вhttps://www.google.com/cse/

  2. Настройки - >Основы, получить идентификатор поисковой системы. CSE search engine ID

  3. Проверьте CSE на https://developers.google.com/apis-explorer/#p/customsearch/v1/search.cse.list

    • установите "q"для любых условий тестового запроса ("foo bar") и" cx " для идентификатора поисковой системы на Шаге 2.
    • нажмите "Выполнить" и получаем результаты поиска. Они работают. Google также предоставляет этот URL, который мы будем повторно использовать в Xcode в шаге 8. Google API Explorer test results
  4. чтобы получить ключ для ID и выставления счетов, создайте новый проект по адресуhttps://console.developers.google.com/

  5. В разделе API & auth - > API - > включить " пользовательский API поиска."Никакие другие API не включены. Developer Console APIs

  6. В разделе API & auth - > учетные данные - > создайте новый ключ iOS. Developer Console Credentials Примечание: Я также попробовал ключ браузера, и результат поиска вернулся " ошибка 400: неверное значение."Я вернулся к ключу iOS, так как я на iOS, и ошибка казалась менее серьезной.

  7. добавьте к этому ключу идентификатор пакета из Xcode. Xcode bundle identifier

  8. в Xcode сделайте запрос GET на URL-адрес на Шаге 3. Замените {YOUR_API_KEY} ключом из ваших учетных данных в шагах 6-7.

GET request in Xcode

NSData * ответ содержит ошибку 403, показанную выше. Спасибо за любые мысли о том, что неправильно!

1 ответов


не хватало поля заголовка X-Ios-Bundle-Идентификатор.

NSString *bundleID = @"com.yourCompany.yourApp";
//...define request as above
[request setHTTPMethod:@"GET"];
[request setValue:bundleID forHTTPHeaderField:@"X-Ios-Bundle-Identifier"];