FlutterFlow
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.
1. Utwórz wywołanie
Dział zatytułowany „1. Utwórz wywołanie”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 wierszContent-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.
2. Ustaw wywołanie jako prywatne
Dział zatytułowany „2. Ustaw wywołanie jako prywatne”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.
3. Odczytaj odpowiedź
Dział zatytułowany „3. Odczytaj odpowiedź”W JSON Paths kliknij + Add JSON Path i nadaj każdej ścieżce nazwę:
| Nazwa | JSON 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.
401przy prywatnym wywołaniu: klucz leży na grupie, a nie na wywołaniu.400 INVALID_FIELDztimezonewdetails: strefa jest pusta, jest skrótem w rodzajuESTalbo nie jest nazwą strefy.400zdatelubtimewdetails: format inny niżYYYY-MM-DD/HH:MM:SS.403 ENDPOINT_NOT_IN_SCOPE: w zakresie klucza nie machart.429 KEY_BUDGET_EXHAUSTED: klucz wyczerpał własny budżet; zwiększ go w dashboardzie.