API de JavaScript de Google Maps RefererNotAllowedMapError

122

Estamos tratando de desarrollar una aplicación de geoplacement para uno de nuestros clientes, y primero queremos probarla en nuestro propio dominio.

Hemos firmado para la API de JavaScript de Google Maps, y tenemos una clave de navegador válida y nuestro dominio, www.grupocamaleon.com, ha sido autorizado para usar esa clave.

Pero no podemos hacer que el ejemplo más sencillo se ejecute sin errores.

Tenemos, en nuestro dominio y con nuestra clave, la siguiente demostración:

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

Pero no funciona, y la consola Firebug dice:

"Error de API de Google Maps: error de API de Google Maps: RefererNotAllowedMapError (enlace a la documentación de Google en RefererNotAllowedMapError) URL de su sitio para ser autorizado: (1)"

Mi página de credenciales no tiene la posibilidad de agregar referencias para aceptar, por lo que las soluciones que implican agregar referencias no son posibles en este momento.

Mi página de credencial:

ingrese la descripción de la imagen aquí

¿Por qué tenemos ese error? ¿Cómo podemos arreglarlo?

Grupo Camaleón Creativos
fuente
Posible duplicado de la referencia de API de Google Maps no permitido . Su código funciona para mí (con mi clave), por lo que hay algo mal con su clave, los referentes permitidos o los servicios habilitados para usar con ella.
geocodezip
Pero no tengo esa posibilidad en mi página de credenciales, como puede ver en mi respuesta aquí. Alguna pista?
Grupo Camaleón Creativos
Bueno, soy un novato y todavía no sé cómo usar este sitio. Disculpe las molestias. He editado mi pregunta, agregando información en mi página de credenciales. Algunas soluciones citadas implican agregar referentes, lo que no puedo hacer en este momento.
Grupo Camaleón Creativos
Si no puede cambiar los referentes de la clave, retírela o reemplácela por una que controle. No se requiere una clave, pero hay beneficios al incluirla.
geocodezip
1
Creé una nueva clave sin restricciones de APP o API, dijo expiredKey durante 10 minutos y luego comencé a trabajar. Luego intenté agregar solo la API de Places, pero se llama desde la web y dice: Google Maps JavaScript API error: RefererNotAllowedMapErrorincluso después de esperar. Luego intenté Maps JavaScript APIy seguía diciendo RefererNotAllowedMapError, intenté actualizar la página y finalmente comenzó a funcionar después de 2 minutos y 40 segundos. Así que ten cuidado. Pero SIN nada funciona para mí, y Maps JavaScript APIsolo lo hace . Solo tienes que esperar mucho.
psycho brm

Respuestas:

167

Sé que esta es una vieja pregunta que ya tiene varias respuestas, pero tuve el mismo problema y para mí el problema fue que seguí el ejemplo proporcionado en console.developers.google.com e ingresé mis dominios en el formato *.domain.tld/*. Esto no funciona en absoluto, y yo trataba de añadir todo tipo de variaciones a esto como domain.tld, domain.tld/*,*.domain.tld etc.

Lo que me resolvió fue agregar el protocolo real también; http://domain.tld/*es el único que necesito para que funcione en mi sitio. Supongo que tendré que agregarhttps://domain.tld/* si tuviera que cambiar a HTTPS.

Actualización: Google finalmente ha actualizado el marcador de posición para incluir httpahora:

Campo de entrada de referencia de API de Google Maps

powerbuoy
fuente
1
Confirmo: la única combinación que me permitió el uso de la API fuehttp://www.---.com/*
Marco Panichi, el
66
Esta respuesta es la única que hizo funcionar mi código. Puedo confirmar que el ejemplo que proporciona Google no funciona.
Jargs
¿Por qué esta pregunta no tenía ninguna respuesta marcada como la "mejor respuesta"? Especialmente el de powerbuoy.
Mohammad Saberi
1
Gracias, @Google, por darnos información falsa. http://----.com/* es el formato correcto.
Michael Yaeger
2
Si tiene varios subdominios que puede hacer, http: //*.example.com y https: //*.example.com para cubrir todas las bases
tim.baker
21

Vamos, Google, ustedes son más inteligentes de lo que permite la página de credenciales API. (Lo sé porque tengo dos hijos trabajando allí).

La lista de "referentes" es mucho más exigente de lo que permite. (Por supuesto, debería ser más indulgente). Aquí hay algunas reglas que me llevaron horas descubrir:

Probablemente hay otras reglas, pero este es un tedioso juego de adivinanzas.

Rick James
fuente
1
Acerca de la respuesta antes de la edición, también me estoy quedando sin paciencia. Parece que las wildacards (*) solo funcionan al final de una dirección ( http://my.site.com/*) o en un subdominio ( http://*.site.com). En TODOS los otros casos no funciona
Cristian Traìna
1
Había puesto incorrectamente una restricción para permitir solo la API de Places (la pestaña al lado de las restricciones de referencia). Esto da como resultado el mismo error RefererNotAllowedMapError.
Matt Greer
Añadiendo www. a mi nombre de dominio lo arregló para mí. No estoy seguro si agregar un comodín (*) al final del dominio, como (https://www.my-site.com/*)también ha corregido el problema.
Mugé
mi aplicación móvil iónica tiene dominio como ionic: // app # / tabs. ¿Cómo lo incluiría en las restricciones? Intenté muchas combinaciones pero en vano. Ej: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO
@ AUK4SO: el signo de libra ( #) tiene un significado especial en las URL. Ver <a name=...>. ¿O quisiste decir iconic://1234/foo?
Rick James
18

Según la documentación, 'RefererNotAllowedMapError' significa

La URL actual que carga la API de JavaScript de Google Maps no se ha agregado a la lista de referencias permitidas. Compruebe la configuración de referencia de su clave API en la Consola de desarrolladores de Google.

Tengo la API de Google Maps Embed configurada para mi propio uso personal / laboral y hasta ahora no he especificado ninguna referencia HTTP. No registro errores. Su configuración debe hacer que Google piense que la URL que está visitando no está registrada ni permitida.

ingrese la descripción de la imagen aquí

TRose
fuente
15

Solo recuerde que si solo lo cambia, la configuración puede tardar hasta 5 minutos.

Putu De
fuente
15

Probé muchas variaciones de referencia y esperé 5 minutos también hasta que me di cuenta de que el ejemplo que Google completa en el campo de formulario es defectuoso. Muestran:

*.example.com/*

Sin embargo, eso solo funciona si tiene subdomain.o www.frente a su nombre de dominio. Lo siguiente me funcionó de inmediato (omitiendo el primer período del ejemplo de Google):

*example.com/*
ow3n
fuente
8
Mala idea: alguien podría crear hackexample.comy usar su API
HyderA
3
@HyderA: una posibilidad más probable es que alguien registre un montón de cuentas de Google gratuitas para obtener cargas de mapas adicionales.
ow3n
@HyderA aún necesitarían la llave, así que no es una gran oportunidad. Pero tienes razón, sigue siendo un riesgo potencial.
Eoin
mi aplicación móvil iónica tiene dominio como ionic: // app # / tabs. ¿Cómo lo incluiría en las restricciones? Intenté muchas combinaciones pero en vano. Ej: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO
10

Según los documentos de Google que esto sucedió debido a que la urlen la que está utilizando el API de Google Maps, not registeredenlist of allowed referrers

EDITAR:

De Google Docs

Todos los subdominios de un dominio específico también están autorizados.

Si http://example.com está autorizado, entonces http://www.example.com también está autorizado. Lo contrario no es cierto: si http://www.example.com está autorizado, http://example.com no está necesariamente autorizado

Entonces, configure el http://testdomain.comdominio, luego http://www.testdomain.comcomenzará a funcionar.

RIYAJ KHAN
fuente
En mi caso, fue DNS mal configurado para el dominio. Por ejemplo: www.testdomain.com funcionó bien testdomain.com no funcionó causando un error
Tahir Khalid
1
Parecería que la lógica de eso se invierte? A menos que me falte algo.
twobob
10

Compruebe que también tiene habilitado el APIS correcto.

Probé todo lo anterior, asteriscos, dominios tlds, barras diagonales, barras diagonales inversas y todo, incluso al final solo ingresé una url como última esperanza.

Todo esto no funcionó y finalmente me di cuenta de que Google también requiere que especifiques ahora qué API quieres usar (ver captura de pantalla)

ingrese la descripción de la imagen aquí

No tenía habilitados los que necesitaba (para mí, eso era la API de JavaScript de Maps)

Una vez que lo habilité, todo funcionó bien usando:

http://www.example.com/ *

¡Espero que ayude a alguien! :)

David Robertson
fuente
8

Descubrí que incluso tu HTTP Referrereseres lo suficientemente válido, un conjunto incorrecto de API Restrictionscausas Google Maps JavaScript API error: RefererNotAllowedMapError.

Por ejemplo:

  • Estás utilizando la API de Javascript para la clave.
  • Añadir http://localhost/*aApplication Restrictions / HTTP Referrences
  • Elige en Maps Embed APIlugar deMaps Javascript API
  • Esto causa RefererNotAllowedMapError
Hiroshi
fuente
Sí, en mi caso el problema fue la clasificación errónea
Andriy F.
¿Pero qué hay de la seguridad? ¿Alguien puede usar mi clave en localhost si permití localhost?
Kaushal
8

NO se permiten comodines (asteriscos) en la parte del subdominio.

  • INCORRECTO: * .example.com / *
  • DERECHA: example.com/*

Olvida lo que Google dice en el marcador de posición, no está permitido.

Daniel Loureiro
fuente
¿Cómo puedo agregar lo siguiente entonces: sc.maindomain.com/Survey/UpdateInspection/102
dE Source
1
Puede configurar comosc.maindomain.com/*
Daniel Loureiro
5

Hay muchas soluciones supuestas a lo largo de varios años, y algunas ya no funcionan y otras nunca lo hicieron, por lo tanto, mi versión actualizada funciona a fines de julio de 2018.

Preparar:

La API de JavaScript de Google Maps tiene que funcionar correctamente con ...

  • múltiples dominios que llaman a la API: example.comyexample.net
  • subdominios arbitrarios: user22656.example.cometc.
  • protocolos HTTP seguros y estándar: http://www.example.com/yhttps://example.net/
  • estructura de ruta indefinida (es decir, una gran cantidad de rutas URL diferentes)

Solución:

  • En realidad utilizando el patrón del marcador de posición: <https (or) http>://*.example.com/*.
  • No omite el protocolo, pero agrega dos entradas por dominio (una por protocolo).
  • Una entrada adicional para subdominios (con un *.nombre de host principal).
  • Tenía la sensación de que el RefererNotAllowedMapErrorerror aún aparecía usando la configuración adecuada (y habiendo esperado mucho tiempo). Eliminé la clave de credencial, repetí la solicitud (ahora obteniendoInvalidKeyMapError ), creé nuevas credenciales (usando exactamente la misma configuración) y funcionó desde entonces.
  • Agregar un mero protocolo y dominio parecía no haber incluido subdominios.
  • Para uno de los dominios, la configuración de trabajo se ve así:

Captura de pantalla de la configuración de la API de Google

(Como texto :)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*
dakab
fuente
En mi caso, esta solución ayudó pero tenía restricción de API en la API incorrecta. Por alguna razón, se devolvió el mismo mensaje de error. Cambiar la restricción de API de 'Places API' a 'Maps Javascript API' solucionó el problema.
LMG
4

ingrese la descripción de la imagen aquí

Acepte solicitudes de estos referentes HTTP (sitios web)

Escribir ruta de directorio localhost

Ayan Chakraborty
fuente
3
según el texto de Google que se supone que es una propiedad opcional y si el espacio en blanco que debería funcionar
ejectamenta
@ayanchakraborty: he probado 10 combinaciones diferentes de localhost / index.html (y varias rutas), así como varias combinaciones de archivo: ///android_assets/www/index.html, pero nada funciona. El RefererNotAllowedMapError en la consola me muestra: La URL de su sitio para ser autorizado: __file_url __ // android_asset / www / index.html # / tab / map //// `- pero esto y las variaciones tampoco funcionan.
Rolinger
4

Experimenté el mismo error:

ingrese la descripción de la imagen aquí

Este enlace habla sobre cómo configurar restricciones de clave API: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

En mi caso, el problema era que estaba usando esta restricción:

Referencias HTTP (sitios web) Acepte solicitudes de estas referencias HTTP (sitios web) (Opcional) Utilice * 's para comodines. Si deja esto en blanco, se aceptarán solicitudes de cualquier referente. Asegúrese de agregar referencias antes de usar esta clave en producción. https://*.example.net/*

Esto significa que las URL como https://www.example.net o https://m.example.net o https://www.example.net/San-salvador/ funcionarían. Sin embargo, las URL como https://example.net o https://example.net o https://example.net/San-salvador/ no funcionarían. Simplemente necesitaba agregar un segundo referente:

https://example.net/*

Eso solucionó el problema para mí.

Jaime Montoya
fuente
4

Agrego 2 dominios de sitios web, el conjunto "*" en el subdominio no funciona, pero el subdominio específico "WWW" y el no subdominio se han trabajado para mis sitios web utilizando la misma clave de API de Google Map.

no use "*" en el subdominio

Espero que sea de ayuda.

Cortar
fuente
3

muestra una captura de pantalla de la página de credenciales de la API, pero debe hacer clic en "Clave de navegador 1" e ir desde allí para agregar referencias.

ITwrx
fuente
3

Para páginas anidadas más profundas

Si tiene un proyecto en una carpeta, por ejemplo, o páginas anidadas

http://yourdomain.com/your-folder/your-page puedes ingresar esto en

http://yourdomain.com/*/*

La parte importante /*/*/*depende de qué tan lejos necesites llegar

Parece que *no coincidirá /ni entrará en caminos más profundos.

Esto le dará acceso completo a su dominio, a menos que tenga un anidamiento más profundo que eso ...

Radmation
fuente
3

Ninguna de estas soluciones funcionó para mí hasta que descubrí que RefererNotAllowedMapErrorpuede ser causada por no tener una cuenta de facturación vinculada al proyecto. Así que asegúrese de activar su prueba gratuita o lo que sea.

Owen Masback
fuente
3
  1. Que tu facturación está habilitada

  2. Que su sitio web ha sido agregado a Google Console

  3. Que su sitio web se agregue a los referentes en su aplicación.

  4. (hacer un comodín para www y ninguno www)

http://www.example.com/ * y http://example.com/ *

  1. Que Javascript Maps está habilitado y está utilizando las credenciales correctas

  2. Que el sitio web se ha agregado a su DNS para habilitar su Google Console arriba.

  3. ¡Sonríe después de que funcione!

Morris
fuente
Puede encontrar su lista de referencias permitidas en la consola web de Google Cloud Platform (console.cloud.google.com) enAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks
3

Este es otro producto sh1tty de Google con una implementación terrible.

El problema que he encontrado con esto es que si restringe una clave API por dirección IP, no funcionará ... PERO lejos de Google para aclarar este punto ... No fue hasta la resolución de problemas e investigación que encontré:

Las claves de API con una restricción de direcciones IP solo se pueden usar con servicios web destinados al uso desde el lado del servidor (como la API de geocodificación y otras API de servicios web). La mayoría de estos servicios web tienen servicios equivalentes dentro de la API de JavaScript de Maps (por ejemplo, consulte el Servicio de geocodificación). Para usar los servicios del lado del cliente de la API de JavaScript de Maps, deberá crear una clave de API separada que se pueda asegurar con una restricción de referencias HTTP (consulte Restricción de una clave de API).

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

FFS Google ... Información bastante importante que sería bueno aclarar en la configuración ...

php-b-grader
fuente
2

Finalmente conseguí el mío usando este consejo de Google: ( https://support.google.com/webmasters/answer/35179 )

Aquí están nuestras definiciones de dominio y sitio. Estas definiciones son específicas de la verificación de Search Console:

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

fuente
2

También luché para que esto funcionara, pero aquí hay algunos consejos:

  • Las URL establecidas como referencias incluyen http, por ejemplo,http://example.com/*
  • Se activó la API de JavaScript de Google Maps
  • La facturación se configuró en esta cuenta

Una vez que se resolvió todo lo anterior, los mapas se muestran como se esperaba.

FMCorz
fuente
1

Intenté utilizar la API de Places (Autocompletar) y también tuve que habilitar la API de JavaScript de Maps desde Google Cloud Console antes de que la API de Places funcionara.

puntilla
fuente
0

Verifique su decklaration en el sitio. Para cargar la API de JavaScript de Google Maps, use una etiqueta de script como esta

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

Estoy usando esta declaración en mi sitio de Wordpress en el archivo function.php

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

He configurado la clave API en este formato, y funciona bien

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

esta declaración no funciona

*.my-domain-name.com/*
Nalaskow
fuente
0

Eliminar las restricciones (a Ninguna) funcionó para mí.

Niño robot
fuente
66
eliminar las restricciones se considera una mala práctica y hace que su API sea vulnerable.
mtness
2
@mtness sí, obviamente, pero el póster ya lo intentó primero sin éxito. Lamentablemente, la documentación de Google no es más útil. Cada respuesta aquí trae nuevos consejos, es casi como un juego de adivinanzas ...
James Wong - Restablece a Mónica el
0

La consola Javascript de Chrome sugirió que declare la dirección completa de la página en mi lista de referencias HTTP, en este caso http://mywebsite.com/map.htm Aunque la dirección exacta es http://www.mywebsite.com/map.htm - Ya tenía estilos de comodines enumerados según lo sugerido por otros, pero esta era la única forma en que funcionaría para mí.

KJB
fuente
0

Esto funcionó para mí. Hay 2 categorías principales de restricciones en la configuración de la clave API:

  • Application restrictions
  • API restrictions

Restricciones de aplicación:

En la parte inferior de la sección de Referencias, agregue la URL de su sitio web " http://www.grupocamaleon.com/boceto/aerial-simple.html ". Hay reglas de ejemplo en el lado derecho de la sección basadas en varios requisitos.

Restricciones de aplicación

Restricciones de API:

Bajo las restricciones de la API, debe seleccionar explícitamente 'Maps Javascript API' de la lista desplegable, ya que nuestra clave única solo se usará para llamar a la API de Google Maps (probablemente) y guardarla como puede ver en el siguiente complemento. Espero que esto funcione para ti ... funcionó para mí

ingrese la descripción de la imagen aquí

Comprueba tu guión:

Además, el problema puede surgir debido a una alimentación incorrecta de claves dentro de la etiqueta de script. Debería ser algo como:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Tahir77667
fuente