Open thepixture opened 6 years ago
Google hat dieses Jahr seine Google Maps API umgestellt und die einzelnen Services (Kartendarstellung, Geokodierung etc.) in einzelne, z.T. kostenpflichtige APIs ausgelagert, die einzeln pro Domain freigeschaltet werden müssen. Insbesondere neue Domains / Projekte sind hiervon betroffen.
Wird bald eine Option im Modul ergänzt, um einen API-Key speziell für die Geocoding API zu hinterlegen?
Geocoding müsste noch funktionieren. Allerdings, wenn ich das richtig interpretiert habe, nicht mehr, wenn man den API-Key auf URLs eingeschränkt hat. Irgendwo habe ich gelesen, dass man bestimmte APIs, darunter die Geocoding API nur auf IPs einschränken kann.
Für diesen Fall müsste also unbedingt ein weiteres Eingabefeld für einen API-Key hinzu kommen, welches dann für den auf IPs eingeschränkten API-Key benutzt wird. Intern müsste dann für den Aufruf dieser APIs der "IP-Key" benutzt werden.
Ich suche noch nach dieser Seite, wo ich das mit der Einschränkung gefunden habe und melde mich dann nochmal.
Die gleiche Erfahrung haben wir auch gemacht. Mit URL-Einschränkung können Maps und Geocoding API nicht gleichzeitig benutzt werden. Es müssen zwangsläufig zwei verschiedene Keys hinterlegt werden.
Suche nach "google maps geocoding ip restrictions" https://developers.google.com/maps/api-key-best-practices https://stackoverflow.com/questions/52416697/google-geocode-api-ip-restrictions
Diese Google Maps APIs funktionieren nur mit IP-Restriction
Das Feld für den zweiten Key muss also nur ausgefüllt werden, wenn der API-Key eine HTTP-Einschränkung hat. Hat man nur einen Key für alle APIs und dieser hat keine Einschränkung, dann kann im Hintergrund dieser eine Key benutzt werden.
Die Geocoding API, welche ja nur aus dem BE heraus laufen muss, dürfte dann nicht über eine HTTP-Anfrage auf ne Geocoding-JS-Datei stattfinden. Weil dabei die IP-Adresse des Users freigebeben werden müsste, welche wir ja nicht kennen. Die Anfrage müsste direkt vom Server gestellt werden und es würde Sinn machen, dass die Erweiterung diese IP direkt im BE an geeigneter Stelle anzeigt, weil wir diese ja freigeben müssen.
Komplexe Thematik, gibt es da schon Lösungsansätze? Die IP bleibt ja nicht mal zwangsläufig immer gleich, oder? Insb. bei Shared Hostern, die ihre DNS-Einträge ändern können, wie sie lustig sind. Oder wird das eher nicht praktiziert?
Steht in eurer localconfig.php
ein dlh_googlemaps_apikey
drin?
Soweit ich sehe liegt der Fehler hier:
Hier wird der Key nicht übergeben. Die Zeile müsste stattdessen
$arrCoords = self::getInstance()->geoCode($strAddress, null, $strLang, $strCountry, null, $key);
lauten.
Hallo, ich würde das gern testen. Leider weiß ich nicht welche Datei ich am Server anpassen muss.
VG Maik
Habe ich doch verlinkt? ;)
Ok, man muss die _GeoCode.php_bearbeiten. War bei mir unter modules/classes/GeoCode.php zu finden. Habe die Zeile ausgebessert und es funktioniert.
"Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?" Damit konnte ich nix anfangen!
Vielen Dank an fritzmg
"Steht in eurer localconfig.php ein dlh_googlemaps_apikey drin?" Damit konnte ich nix anfangen!
Die localconfig.php
befindet sich in system/config
.
Bei mir steht der Key drin.
Aber dies löst nicht das Problem mit dem Key, wenn er auf spezielle Domains festgesetzt wurde. Richtig?
Aber dies löst nicht das Problem mit dem Key, wenn er auf spezielle Domains festgesetzt wurde. Richtig?
Für das Backend musst du einen Key verwenden, der auch im Backend funktioniert - aber das ist ja nur mehr eine Frage der Konfiguration und kein Fehler der Extension.
Die Lösung des Problems ist übrigens schon seit einem Jahr bekannt: https://github.com/delahaye/dlh_geocode/issues/12#issue-363482378 ;)
Steht in eurer
localconfig.php
eindlh_googlemaps_apikey
drin?
Nein. Wird der normalerweise automatisch angelegt?
^ das wars! Danke! Wo steht das denn, dass es dahin muss?
Nein. Wird der normalerweise automatisch angelegt?
Das wird angelegt, wenn du in den System Einstellungen den API Key einträgst.
^ das wars! Danke! Wo steht das denn, dass es dahin muss?
Das ist der primäre Ort, wo du den API Key einträgst - und auch der einzige Ort, der für das Backend gilt.
In den neueren Versionen kann man den API Key nun auch pro Domain für das Frontend einstellen, falls du mehrere API Keys je Domain/Website hast. Die gelten aber nicht für das Backend, logischerweise.
Ah, ok. Also brauche ich zwei Keys, einen fürs BE ohne Restriktionen, den trage ich in den Einstellungen ein, damit er in die localconfig.php kommt und der wird im BE benutzt. Und einen Key fürs FE, der dann auch auf die Domain beschränkt sein kann und im Startpunkt eingetragen wird. Richtig?
Grundsätzlich ja. Den für das Backend könntest du per IP restricten.
Also ich hab jetzt mal ein bisschen rumgespielt. Der Weg mit 2 Keys funktioniert, wenn:
Lässt man den Key ohne Einschränkung, reicht auch einer! Dann sei aber halt Vorsicht geboten, wegen Kontingentklau, sagt Tante/Onkel Google.
Wenn ich jetzt eine neue Karte anlege, wird die Karte nicht mehr angezeigt. Auch zwei bereits angelegte Karten werden nicht mehr angezeigt. Woran kann das liegen?
Hier der Link.
https://boulderrausch.de/nordamerika-bouldern.html
Es fehlen genau zwei Zeilen Code:, gegenüber den alten Seiten:
@maiurb das hat jetzt aber nichts mehr mit diesem Ticket zu tun?
Das Problem ist aber erst aufgetreten, nachdem ich die Änderungen vorgenommen habe.??? Warum wird plötzlich der Code nicht mehr übergeben. Bei den zwei bestehenden Karten hatte alles funktioniert. Jetzt werden sie nicht mehr angezeigt. Die alten Karten funktionieren alle, aber keine neu angelegten und die zwei. Irgend eine Idee?
Das hier ist falsch
google.maps.LatLng(Nordamerika)
müsste so aussehen
google.maps.LatLng(54.5259614,15.2551187)
ps Schmeiß mal dein MooTools und die Slimbox raus, das solltest du eigentlich beides nicht benötigen.
Das hier ist falsch
google.maps.LatLng(Nordamerika)
müsste so aussehen
google.maps.LatLng(54.5259614,15.2551187)
ps Schmeiß mal dein MooTools und die Slimbox raus, das solltest du eigentlich beides nicht benötigen.
Danke, das hat funktioniert.
Nachdem ich aber die Erweiterung noch mal aktualisiert/repariert habe, hat alles andere auch wieder funktioniert!
Vielen Dank für die Unterstützung.
VG Maik
Nachdem ich aber die Erweiterung noch mal aktualisiert/repariert habe, hat alles andere auch wieder funktioniert!
Hattest du vorher die Änderung von FritzMG in der dlh_geocode/classes/GeoCode.php gemacht? Dann wurde die ja bei der Reparatur überschrieben, oder? Ich frage, weil ich diese Änderung an einer meiner Installationen NICHT gemacht habe und an der alles mit den beiden Keys (IP- und URL-Beschränkung) funktioniert. An einer anderen (Test-)Installation, an der ich u.a. die Änderung von FritzMG gemacht hab, funktioniert gerade nur noch der Frontend-Teil der Erweiterung korrekt.
Also, die Änderungen waren wirklich nicht mehr drin, nach der Aktualisierung. So habe ich es garade getestet und es kam der übliche Fehler.
Jetzt habe ich die Änderung in die Datei "GeoCode.php" wieder eingetragen und getestet, kein Fehler!
Wenn man eine neue Karte anlegt und die Adresse bei "Adresse für Geocoding" eingibt und dann speichert, werden die Koordinaten nicht mehr automatisch in das Feld "Geo-Koordinaten" eingetragen.