fix: Google-Rezensionen wurden nie geladen — falscher fields-Parameter
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m9s
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 2m9s
Die Anfrage an die Places API setzte "fields=review". Richtig ist "reviews" (Plural). Google antwortet auf den falschen Wert mit INVALID_REQUEST, die Funktion gab daraufhin null zurueck, und die Startseite fiel auf die statischen Beispiel-Stimmen zurueck. Nach aussen sah das voellig normal aus — eine Bewertungen-Sektion mit Zitaten und Sternen war ja da. Nur waren es nie die echten. Genau deshalb blieb der Tippfehler unbemerkt. Damit das nicht wieder passieren kann, meldet die Anbindung jetzt, WARUM sie nichts liefert. Vorher fuehrten alle Fehlerfaelle stumm zum selben Bild: [google-reviews] Places API meldet "REQUEST_DENIED": ... REQUEST_DENIED (Schluessel ungueltig oder Places API im Projekt nicht aktiviert), NOT_FOUND (Place-ID stimmt nicht) und OVER_QUERY_LIMIT (Kontingent erschoepft oder keine Abrechnung hinterlegt) sind damit von aussen unterscheidbar. Weitere Korrekturen: - Zeitlimit von fuenf Sekunden. Ohne das haengt die Startseite an einer nicht antwortenden fremden API — dieselbe Absicherung wie beim Passwort-Leak-Abgleich. - Rezensionen verlinken auf ihre Quelle bei Google. Die Nutzungsbedingungen der Places API verlangen die Zuordnung; bisher stand ein fremdes Zitat unbelegt auf der Seite. author_url und profile_photo_url wurden aus der Antwort schlicht verworfen. - Rezensionen ohne Text werden uebersprungen. Reine Sternebewertungen sind in der Antwort enthalten und waeren als Zitat eine leere Sprechblase; "text" ist laut Google optional, war hier aber als Pflichtfeld typisiert. README: Einrichtung, Bedeutung der Statuscodes und der Hinweis, dass Google den genutzten place/details-Endpunkt als Legacy fuehrt — bleibt REQUEST_DENIED trotz gueltigem Schluessel bestehen, ist die Umstellung auf die Places API (New) faellig. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
1 parent
33580b3290
commit
7fe1a01550
3 files changed
+96
-21
No files matched your search
@@ -164,8 +164,13 @@ export async function Reviews() {
|
||||
// uebersetzt oder umformuliert — nur die eigenen Fallback-Testimonials
|
||||
// (ohne konfigurierte Google-Anbindung) existieren in beiden Sprachen.
|
||||
const items = google && google.reviews.length > 0
|
||||
? google.reviews.map((r) => ({ quote: r.text, author: r.author, rating: r.rating }))
|
||||
: t.home.reviews.testimonials.map((r) => ({ ...r, rating: 5 }));
|
||||
? google.reviews.map((r) => ({
|
||||
quote: r.text,
|
||||
author: r.author,
|
||||
rating: r.rating,
|
||||
authorUrl: r.authorUrl,
|
||||
}))
|
||||
: t.home.reviews.testimonials.map((r) => ({ ...r, rating: 5, authorUrl: null }));
|
||||
|
||||
return (
|
||||
<section className="py-24 bg-forest text-cream">
|
||||
@@ -192,7 +197,22 @@ export async function Reviews() {
|
||||
<p className="mt-4 text-cream/85 leading-relaxed italic">
|
||||
„{review.quote}“
|
||||
</p>
|
||||
<p className="mt-4 text-sm text-cream/70">{review.author}</p>
|
||||
{/* Zuordnung zur Quelle: die Nutzungsbedingungen der Places API
|
||||
verlangen, dass eine angezeigte Rezension zu Google
|
||||
zurueckfuehrt. Bei den eigenen Beispiel-Stimmen gibt es
|
||||
nichts zu verlinken — dort bleibt es beim reinen Namen. */}
|
||||
{review.authorUrl ? (
|
||||
<a
|
||||
href={review.authorUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer nofollow"
|
||||
className="mt-4 inline-block text-sm text-cream/70 underline decoration-cream/30 hover:decoration-cream"
|
||||
>
|
||||
{review.author}
|
||||
</a>
|
||||
) : (
|
||||
<p className="mt-4 text-sm text-cream/70">{review.author}</p>
|
||||
)}
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user