Przejdź do głównej zawartości
AstroWay/api v2.325.0 · pl
wszystkie systemy w normie

FlutterFlow

Last updated Otwórz jako Markdown Konfiguracja agenta

FlutterFlow kompiluje się do aplikacji, którą Twój użytkownik trzyma w ręku, więc pytanie nie brzmi, które pola wypełnić, tylko gdzie wyląduje klucz. Poniższe żądanie wysłano na produkcję dokładnie w takiej postaci, w jakiej składa je to wywołanie; kroki we FlutterFlow opisano według dokumentacji FlutterFlow na dzień 2026-09-17.

Najpierw utwórz klucz tak, jak opisano w sekcji Klucz do automatyzacji, z zakresem chart.

Otwórz API Calls, kliknij + Add, wybierz Create API Call i wypełnij:

  • API Call Name: Natal chart.

  • Method Type: POST.

  • URL:

    https://api.astroway.info/v1/chart
  • Zakładka Headers, + Add Header: jeden wiersz X-Api-Key: , a po nim Twój klucz. Drugi wiersz Content-Type: application/json.

  • Zakładka Variables: pięć zmiennych typu String, date, time, timezone, latitude, longitude, każda z wartością domyślną z poniższego JSON.

  • Zakładka Body, na liście rozwijanej JSON: wklej JSON i przeciągnij do niego zmienne.

{
"date": "1990-05-15",
"time": "14:30:00",
"timezone": "Europe/Kyiv",
"latitude": "50.45",
"longitude": "30.52"
}

Szerokość i długość geograficzna celowo zostają tekstem: API przyjmuje "50.45" jako liczbę, a tekst ułatwia przeciąganie zmiennych.

Kliknij Add Call, otwórz Response & Test, kliknij Test API Call i sprawdź odpowiedź w Test Response. data.input.timezoneOffset wraca jako 4: dokładnie takie przesunięcie miał Kijów w tym dniu.

W Advanced Settings wywołania włącz Make Private, kliknij Save, a potem Deploy APIs. Od teraz wywołanie wykonuje się w Firebase Cloud Function, więc projekt potrzebuje podłączonego Firebase i planu Firebase z Cloud Functions.

Jeszcze dwie rzeczy, o których dokumentacja FlutterFlow mówi wprost: klucz przekazany z frontendu, na przykład przez remote config, pozostaje jawny nawet w prywatnym wywołaniu, a bezpieczną formą jest nagłówek wpisany w samo wywołanie.

W JSON Paths kliknij + Add JSON Path i nadaj każdej ścieżce nazwę:

NazwaJSON Path
ascendant$.data.houses.ascendant
sunLongitude$.data.planets[0].longitude
moonLongitude$.data.planets[1].longitude
offsetUsed$.data.input.timezoneOffset

Znak to długość podzielona przez 30 i zaokrąglona w dół, jako indeks na liście dwunastu nazw: w przykładzie Ascendent 159.26 daje 5, czyli Pannę. Wystarczy własna funkcja na cztery linijki albo lista dwunastu tekstów i indeks.

Build webowy nie może łączyć się z nami z przeglądarki

Dział zatytułowany „Build webowy nie może łączyć się z nami z przeglądarki”

Zmierzono 2026-09-17 ze strony w obcej domenie: POST /v1/chart odpowiada na preflight bez nagłówka access-control-allow-origin, a Chrome blokuje żądanie. Przeglądarce w obcej domenie odpowiadają tylko /v1/public/* i /v1/embed/*.

FlutterFlow przepuszcza wywołania przez własne proxy w edytorze, w Run mode i w Test mode, więc wywołanie, które tam działa, może przestać działać po opublikowaniu aplikacji webowej. Są dwa wyjścia, i polecamy pierwsze:

  • Ustaw wywołanie jako prywatne, jak wyżej. Wtedy wykonuje się w Cloud Function, a nie w przeglądarce, co od razu rozwiązuje i kwestię klucza, i kwestię CORS.
  • Postaw przed nami własny backend, jeśli już go masz. Ustawienia proxy we FlutterFlow, łącznie z własnym proxy URL, są udokumentowane dla edytora oraz trybów Run i Test; o opublikowanym buildzie webowym dokumentacja nie mówi nic, więc nie warto na nich tam polegać.

Publiczny klucz pk_ tego nie rozwiązuje: sięga tylko do /v1/public/* i /v1/embed/*, a z buildów na iOS i Androida jest w ogóle odrzucany, bo nie wysyłają one webowego origin.

  • 401 przy prywatnym wywołaniu: klucz leży na grupie, a nie na wywołaniu.
  • 400 INVALID_FIELD z timezone w details: strefa jest pusta, jest skrótem w rodzaju EST albo nie jest nazwą strefy.
  • 400 z date lub time w details: format inny niż YYYY-MM-DD / HH:MM:SS.
  • 403 ENDPOINT_NOT_IN_SCOPE: w zakresie klucza nie ma chart.
  • 429 KEY_BUDGET_EXHAUSTED: klucz wyczerpał własny budżet; zwiększ go w dashboardzie.