API API Google Maps JavaScript RefererNotAllowedMapError


122

Ми намагаємось розробити додаток для геоплацензії для одного з наших клієнтів, і ми хочемо спочатку протестувати його у власному домені.

Ми підписали JavaScript API Google Maps, і у нас є дійсний ключ браузера, і наш домен, www.grupocamaleon.com, отримав право використовувати цей ключ.

Але ми не можемо зробити навіть найпростіший приклад для запуску без помилок.

У нашому домені та з ключем у нас є така демонстраційна версія:

(1) http://www.grupocamaleon.com/boceto/aerial-simple.html

Але це не працює, і консоль Firebug каже:

"Помилка API Google Maps: Помилка API Google Maps: RefererNotAllowedMapError (посилання на документацію Google щодо RefererNotAllowedMapError) URL вашого сайту має бути авторизованим: (1)"

На моїй сторінці облікових даних відсутня можливість додавання рефералів для прийняття, тому рішення, що включають додавання рефератів, наразі неможливі.

Моя сторінка облікових даних:

введіть тут опис зображення

Чому ми отримуємо цю помилку? Як ми можемо це виправити?


Можливий дублікат посилання на API Google Maps не дозволений . Ваш код працює для мене (з моїм ключем), тому щось не так з вашим ключем, дозволеними референтами або службами, дозволеними користуватися ним.
geocodezip

Але я не маю такої можливості на своїй обліковій сторінці, як ви бачите тут у моїй відповіді. Будь-який натяк?
Grupo Camaleón Creativos

Ну, я новачок і ще не знаю, як правильно використовувати цей сайт. Вибачте за незручності. Я відредагував своє запитання, додавши інформацію на мою сторінку облікових даних. Деякі цитовані рішення передбачають додавання референтів, чого я не можу зробити на даний момент.
Grupo Camaleón Creativos

Якщо ви не можете змінити референси для ключа, вийміть його або замініть ним той, яким ви керуєте. Ключ не обов'язковий, але є включення одного.
geocodezip

1
Я створив новий ключ без обмежень APP чи API, він сказав, що закінчилося 10 хвилин, а потім почав працювати. Далі я спробував додати API просто місць, але він дзвонив з Інтернету і каже: Google Maps JavaScript API error: RefererNotAllowedMapErrorнавіть після очікування. Потім я спробував, Maps JavaScript APIі він постійно говорив RefererNotAllowedMapError, спробував оновити сторінку, і вона, нарешті, почала працювати через 2 хвилини і 40 секунд. Тож дивіться чорт. Але БЕЗ нічого не працює на мене, і так робиться Maps JavaScript APIтільки. Вам просто доведеться багато чекати.
psycho brm

Відповіді:


167

Я знаю, що це старе запитання, на яке вже є кілька відповідей, але у мене була ця сама проблема, і для мене проблема полягала в тому, що я слідував прикладу, наведеному на console.developers.google.com, і ввів мої домени у форматі *.domain.tld/*. Це не працює на всіх, і я спробував додати всі види варіацій цього , як domain.tld, domain.tld/*, і *.domain.tldт.д.

Що для мене це вирішило, було також додавання фактичного протоколу ; http://domain.tld/*це єдине, що мені потрібно для роботи на моєму сайті. Я думаю, мені потрібно буде додати, https://domain.tld/*якби я перейшов на HTTPS.

Оновлення: Google остаточно оновив заповнювач, щоб httpтепер включити :

Поле введення реферала API Карт Google


1
Я підтверджую: єдина комбінація, яка дозволила мені використовувати API,http://www.---.com/*
Марко Панічі

6
Ця відповідь є єдиною, з якою мій код працює. Я можу підтвердити, що приклад, який надає Google, не працює.
Jargs

1
Дякуємо, @Google, що надали нам неправдиву інформацію. http://----.com/* - правильний формат.
Майкл Єгер

2
Якщо у вас є кілька піддоменів, ви можете це зробити, http: //*.example.com та https: //*.example.com, щоб охопити всі бази
tim.baker

1
Можливо, Google оновив цю функцію - для мене вона працює без протоколу. У мене є example.com/*поле налаштувань, і воно працює зhttps://example.com/map
Енді

21

Заходьте в Google, ви, розумніші, розумніші, ніж на сторінці довіреностей API. (Я знаю, бо в мене працюють два сини.)

Список "рефератів" набагато прискіпливіший, ніж він дозволяє. (Звичайно, слід пробачити більше.) Ось кілька правил, на які знадобилися години, щоб відкрити:

  • Порядок у списку важливий. Переміщення вашої URL-адреси в списку може призвести до роботи.
  • Префікс "http: //" обов'язковий.
  • Навіть "localhost" потребує цього: " http: //localhost/foo/bar.html "
  • Трейлінг * в якості шаблону , здається, працює , як ніби це рядок порівняння.
  • Навіть із " http: //localhost/foo/bar.html " " http: //localhost/foo/bar.html? Arg = 1 " не працюватиме. (Чи допоможе підстановка?)
  • Для обох prod-розробників майте (принаймні) два рядки: " http: //localhost/foo/bar.html " та " http://my.site.com/foo/bar.html "
  • Номер порта (8085? 4000?) Здається не потрібним.

Мабуть, є й інші правила, але це втомлива гра відгадування.


1
Щодо відповіді перед редагуванням, у мене теж не вистачає терпіння. Схоже, що wildacards (*) працюють лише в кінці адреси ( http://my.site.com/*) або в субдомені ( http://*.site.com). У ВСІХ інших випадках це не працює
Крістіан Трена

1
Я неправильно поставив обмеження, щоб дозволити лише API Місця на карті (вкладка поруч із обмеженнями для пересилання). Це призводить до тієї ж помилки RefererNotAllowedMapError.
Метт Грір

Додавання www. до мого доменного імені виправили це для мене. Я не впевнений, чи додавати підстановку (*) до кінця домену, наприклад, (https://www.my-site.com/*)також виправлено проблему.
Mugé

мій іонний мобільний додаток має домен як ionic: // app # / tabs. Як би я включив її до обмежень. Я спробував багато комбінацій, але даремно. Напр .: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

@ AUK4SO - Знак фунта ( #) має особливе значення в URL-адресах. Див <a name=...>. Або ти мав на увазі iconic://1234/foo?
Рік Джеймс

18

Згідно з документацією, "RefererNotAllowedMapError" означає

Поточна URL-адреса, що завантажує API Google Maps JavaScript, не додана до списку дозволених рефератів. Перевірте налаштування рефератора ключа API на консолі розробника Google.

У мене вбудований API Google Maps Embed для мого особистого / робочого використання, і досі не вказав жодних HTTP-рефератів. Я не реєструю помилок. Ваші налаштування повинні змусити Google вважати, що URL-адреса, яку ви відвідуєте, не зареєстрована чи заборонена.

введіть тут опис зображення


15

Просто нагадуйте, що якщо ви просто зміните, це може зайняти до 5 хвилин, щоб налаштування набули чинності.


15

Я спробував безліч варіантів рефералів і чекав 5 хвилин, поки не зрозумів, що приклад, який Google заповнює у полі форми, є помилковим. Вони показують:

*.example.com/*

Однак це працює лише в тому випадку, якщо у вас є subdomain.або www.перед вашим доменним іменем. Наступне працювало для мене негайно (опускаючи провідний період із прикладу Google):

*example.com/*

8
Погана ідея - хтось може створити hackexample.comта використати вашу api
HyderA

3
@HyderA - Більш імовірною є можливість, щоб хтось зареєстрував купу безкоштовних Google акаунтів, щоб отримати додаткові навантаження на карту.
ow3n

@HyderA їм все одно знадобиться ключ, тому не величезний шанс. Але ти маєш рацію, все-таки потенційний ризик.
Eoin

мій іонний мобільний додаток має домен як ionic: // app # / tabs. Як би я включив її до обмежень. Я спробував багато комбінацій, але даремно. Напр .: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

10

Згідно з документами google, це сталося тому, що urlв ньому ви користуєтесь API Карт Google, він not registeredуlist of allowed referrers

Редагувати:

Від Документів Google

Усі субдомени вказаного домену також дозволені.

Якщо http://example.com авторизований, то http://www.example.com також уповноважений. Зворотний бік не відповідає дійсності: якщо http://www.example.com дозволено, http://example.com не обов'язково має право

Отже, налаштуйте http://testdomain.comдомен, і тоді ви http://www.testdomain.comпочнете роботу.


У моєму випадку було неправильно налаштовано DNS для домену. Наприклад: www.testdomain.com добре працював testdomain.com не працював, викликаючи помилку
Тахір Халід

1
Здавалося б, логіка цього зворотна? Якщо я щось не пропускаю.
twobob

10

Перевірте, чи увімкнено правильний APIS.

Я спробував усе вищесказане, зірочки, доменні tlds, косої риски, зворотній кут і все, навіть врешті-решт, лише ввівши одну URL як останню надію.

Все це не спрацювало, і нарешті я зрозумів, що Google також вимагає вказати, який саме API ви хочете використовувати (див. Знімок екрана)

введіть тут опис зображення

У мене не було ввімкнено тих, які мені потрібні (для мене це API JavaScript Maps)

Як тільки я це ввімкнув, усе працювало чудово, використовуючи:

http://www.example.com/ *

Я сподіваюся, що хтось допомагає! :)


9

Підмітки (зірочки) НЕ дозволені в піддоменній частині.

  • WRONG: * .example.com / *
  • ВПРАВО: example.com/*

Забудьте те, що говорить Google на заповнювачі, це не дозволяється.


Як потім додати наступне: sc.maindomain.com/Survey/UpdateInspection/102
dE Джерело

1
Ви можете встановити якsc.maindomain.com/*
Даніель Лурейро

8

Я виявив, що навіть ваші HTTP Referreresдостатньо дійсні, неправильний набір API Restrictionsпричин Google Maps JavaScript API error: RefererNotAllowedMapError.

Наприклад:

  • Ви використовуєте API Javascript для ключа.
  • Додати http://localhost/*вApplication Restrictions / HTTP Referrences
  • Виберіть Maps Embed APIзамістьMaps Javascript API
  • Це викликає RefererNotAllowedMapError

Так, у моєму випадку помилкова класифікація була в питанні
Андрій Ф.

А як щодо безпеки? Чи може хтось використовувати мій ключ у localhost, якщо я дозволений для localhost?
Каушал

5

Протягом декількох років існує багато передбачуваних рішень, а деякі більше не працюють, а деякі ніколи цього не зробили, тому мої оновлені роботи працюють на кінець липня 2018 року.

Налаштування:

API API Карт Google повинен належним чином працювати з…

  • кілька доменів, що викликають API: example.comтаexample.net
  • довільні субдомени: user22656.example.comтощо.
  • і безпечні, і стандартні протоколи HTTP: http://www.example.com/іhttps://example.net/
  • невизначена структура шляху (тобто велика кількість різних шляхів URL)

Рішення:

  • На насправді , використовуючи шаблон з заповнювач: <https (or) http>://*.example.com/*.
  • Не опускаючи протокол, але додаючи два записи на домен (один на протокол).
  • Додатковий запис для субдоменів (з *.провідним іменем хоста).
  • У мене було відчуття, що RefererNotAllowedMapErrorпомилка все-таки з’явилася за допомогою належної конфігурації (і чекала достатньо часу). Я видалив ключ облікового запису, повторив запит (зараз отримую InvalidKeyMapError), створив нові облікові дані (використовуючи таку саму настройку), і він працював з тих пір.
  • Додавання простого протоколу та домену, здавалося, не включало субдомени.
  • Для одного з доменів робоча конфігурація виглядає так:

Знімок екрана з конфігурації API Google

(Як текст :)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*

У моєму випадку це рішення допомогло, але мало обмеження API на неправильному API. Чомусь повернено те саме повідомлення про помилку. Зміна обмеження API з "Місця API" на "API Javascript Maps" вирішила проблему.
LMG

4

введіть тут опис зображення

Приймайте запити від цих HTTP-рефератів (веб-сайтів)

Напишіть шлях до каталогу localhost


3
згідно з текстом Google, це повинно бути необов’язковим властивістю, і якщо він порожній, він повинен працювати
ejectamenta

@ayanchakraborty - я спробував 10 різних комбінацій localhost / index.html (і різних шляхів), а також різні комбінації файлів: ///android_assets/www/index.html - але нічого не працює. У консолі відображається RefererNotAllowedMapError: URL вашого веб-сайту має бути дозволений: __file_url __ // android_asset / www / index.html # / tab / map //// `- але це і варіанти також не працюють.
ролінгер

4

Я зазнав таку ж помилку:

введіть тут опис зображення

Це посилання розповідає про те, як налаштувати ключові обмеження API: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

У моєму випадку проблема полягала в тому, що я використовував це обмеження:

HTTP-референси (веб-сайти) Приймайте запити від цих HTTP-реферерів (веб-сайти) (необов'язково) Використовуйте * для підстановки. Якщо ви залишите це поле порожнім, запити будуть прийняті від будь-якого рефератора. Обов’язково додайте посилання, перш ніж використовувати цей ключ у виробництві. https://*.example.net/*

Це означає, що такі URL-адреси, як https://www.example.net або https://m.example.net або https://www.example.net/San-salvador/ , працюватимуть. Однак такі URL-адреси, як https://example.net або https://example.net або https://example.net/San-salvador/ , не працюватимуть. Мені просто потрібно було додати другого реферала:

https://example.net/*

Це вирішило для мене проблему.


4

Я додаю 2 домени веб-сайтів, набір "*" в субдомені не працює, але конкретний субдомен "WWW" і не-піддомен працювали для моїх веб-сайтів за допомогою того самого ключа API Map Map.

не використовуйте "*" у субдомені

Сподіваюся, це допоможе.


3

ви показуєте скріншот сторінки ваших облікових записів api, але вам потрібно натиснути «Клавіша браузера 1» та перейти звідти, щоб додати рефератів.


3

Для більш глибоких вкладених сторінок

Якщо у вас є проект у папці, наприклад, або вкладені сторінки

http://yourdomain.com/your-folder/your-page ви можете ввести це в

http://yourdomain.com/*/*

Важлива частина - /*/*/*залежність від того, як далеко вам потрібно пройти

Здається, що *воля не збігається /і не потрапляє в більш глибокі шляхи ..

Це дасть вам повний доступ до домену, добре, якщо ви не будете більш глибоко вкладені.


3

Жоден із цих виправлень не працював для мене, поки я не з’ясував, що це RefererNotAllowedMapErrorможе бути викликано відсутністю платіжного рахунку, пов'язаного з проектом. Тому не забудьте активувати безкоштовну пробну версію чи будь-що інше.


3
  1. Щоб ваш рахунок виставлено

  2. Щоб ваш веб-сайт додано до консолі Google

  3. Щоб ваш веб-сайт додано до рефератів у вашому додатку.

  4. (зробіть підстановку як для www, так і для не www)

http://www.example.com/ * та http://example.com/ *

  1. Цей Javascript Maps увімкнено, і ви використовуєте правильні облікові дані

  2. Щоб веб-сайт був доданий у вашу DNS, щоб увімкнути консоль Google вище.

  3. Посміхніться після роботи!


Ваш список дозволених реферерів можна знайти на веб-консолі Google Cloud Platform (console.cloud.google.com) у розділіAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks

3

Це ще один продукт sh1tty Google зі страшною реалізацією.

Проблема, яку я виявив у цьому, полягає в тому, що якщо ви обмежите ключ API за IP-адресою, він не буде працювати ... Але далеко від Google, щоб зробити це зрозумілим ... Це було не до усунення несправностей та дослідження, я виявив:

Ключі API з обмеженням IP-адрес можна використовувати лише з веб-службами, призначеними для використання з боку сервера (наприклад, API геокодування та інших API веб-служб). Більшість цих веб-сервісів мають еквівалентні послуги в API JavaScript Maps (наприклад, див. Службу геокодування). Для використання служб клієнта API API Maps, вам потрібно буде створити окремий ключ API, який можна захистити обмеженням HTTP-рефератів (див. Обмеження ключа API).

https://developers.google.com/maps/documentation/javascript/error-messages

FFS Google ... Досить важлива інформація, яку було б добре уточнити під час налаштування ...



2

Нарешті я почав працювати, користуючись цією порадою від Google: ( https://support.google.com/webmasters/answer/35179 )

Ось наші визначення домену та сайту. Ці визначення є специфічними для перевірки консолі пошуку:

http://example.com/ - A site (because it includes the http:// prefix)
example.com/ - A domain (because it doesn't include a protocol prefix)
puppies.example.com/ - A subdomain of example.com
http://example.com/petstore/ - A subdirectory of http://example.com site

2

Я намагався також зробити цю роботу, але ось деякі вказівки:

  • URL-адреси, встановлені в якості посилань, включають http, наприклад,http://example.com/*
  • API Google Maps JavaScript увімкнено
  • На цьому рахунку було налаштовано виставлення рахунків

Як тільки все вище було вирішено, карти відображаються як очікувалося.


1

Я намагався використовувати API Місця на карті (Автозаповнення), і мені довелося також включити API Javascript Maps зсередини в хмарній консолі Google, перш ніж API Місця на карті працював.


0

Перевірте свою декларацію на сайті. Для завантаження JavaScript API Google Maps використовуйте такий тег сценарію

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>

Я використовую цю декларацію на своєму сайті Wordpress у файлі function.php

wp_enqueue_script("google-maps-v3", "//maps.google.com/maps/api/js?key=YOUR_API_KEY", false, array(), false, true);

Я встановив ключ API у цьому форматі, і він працює добре

http://my-domain-name(without www).com/*

ця декларація не працює

*.my-domain-name.com/*

0

Видалення обмежень (до None) працювало для мене.


6
видалення обмежень вважається поганою практикою і робить ваш API вразливим.
mtness

2
@mtness так, очевидно, але плакат уже спробував це спочатку без успіху. На жаль, документація Google вже не корисна. Кожна відповідь тут приносить нові поради, це майже як гра в здогадки ...
Джеймс Вонг - Відновити Моніку


0

Консоль Javascript Chrome запропонувала мені оголосити всю адресу сторінки в моєму списку рефералів HTTP, в цьому випадку http://mywebsite.com/map.htm Навіть якщо точна адреса http://www.mywebsite.com/map.htm - У мене вже були вказані стилі підстановки, як вони запропонували інші, але це був єдиний спосіб, який він би працював для мене.


0

Це працювало для мене. У налаштуваннях клавіш api є дві основні категорії обмежень:

  • Application restrictions
  • API restrictions

Обмеження щодо застосування:

Внизу, у розділі "Довідник", додайте URL-адресу свого веб-сайту " http://www.grupocamaleon.com/boceto/aerial-simple.html ". На правій частині розділу в правій частині наведено приклади правил на основі різних вимог.

Обмеження щодо застосування

Обмеження API:

Під обмеженнями API вам слід чітко вибрати "API Javascript API" зі спадного списку, оскільки наш унікальний ключ буде використовуватися лише для виклику API карт Google (можливо) та зберегти його, як видно з оснащення нижче. Я сподіваюся, що це працює для вас ..... працював на мене

введіть тут опис зображення

Перевірте свій сценарій:

Також проблема може виникнути через неправильну подачу ключів всередині тегу сценарію. Це має бути щось на кшталт:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.