FlutterFlow
FlutterFlow bir uygulamaya derlenir ve bu uygulamayı kullanıcıların elinde tutar, bu yüzden sorun hangi alanları doldurmakta değil, anahtarın nerede bulunacağıdır. Aşağıdaki istek, üretim ortamına tam olarak çağrının oluşturduğu şekilde gönderilir; FlutterFlow adımları 2026-09-17 tarihli FlutterFlow belgelerine göre yazılmıştır.
İlk olarak, Otomasyon Anahtarı bölümünde açıklandığı gibi, chart alanı ile bir anahtar oluştur.
1. Çağrıyı Oluştur
Section titled “1. Çağrıyı Oluştur”API Calls’ı aç, + Add’e tıkla, Create API Call’ı seç ve doldur:
-
API Call Name:
Natal chart. -
Method Type:
POST. -
URL:
https://api.astroway.info/v1/chart -
Sekme Headers, + Add Header: bir satır
X-Api-Key:ve ardından anahtarınız. İkinci satırContent-Type: application/json. -
Sekme Variables:
date,time,timezone,latitude,longitudeolmak üzere beş adet String değişken, her biri aşağıdaki JSON’dan varsayılan değere sahip. -
Sekme Body, açılır listeden JSON seçeneği: JSON’u yapıştır ve değişkenleri içine sürükle.
{ "date": "1990-05-15", "time": "14:30:00", "timezone": "Europe/Kyiv", "latitude": "50.45", "longitude": "30.52"}Enlem ve boylam kasıtlı olarak string olarak bırakılır: API "50.45" değerini sayı olarak kabul eder, ancak string değişkenlerin sürüklenmesini kolaylaştırır.
Add Call’a tıkla, Response & Test’i aç, Test API Call’a tıkla ve yanıtı Test Response’da gör. data.input.timezoneOffset 4 olarak döner: Kiev’in o tarihteki saat dilimi kayması budur.
2. Çağrıyı özel yap
Section titled “2. Çağrıyı özel yap”Advanced Settings içinde çağrının Make Private seçeneğini aç, Save’e tıkla, ardından Deploy APIs. Artık çağrı Firebase Cloud Function içinde çalışır, bu yüzden proje bağlı bir Firebase ve Cloud Functions içeren bir Firebase tarifesine ihtiyaç duyar.
FlutterFlow belgelerinin doğrudan söylediği iki şey daha var: ön uçtan, örneğin remote config üzerinden gönderilen anahtar, özel çağrıda bile açık kalır; güvenli form ise başlık olarak doğrudan çağrıya eklenmiş halidir.
3. Yanıtı Oku
Section titled “3. Yanıtı Oku”JSON Paths içinde + Add JSON Path’e tıkla ve her birine bir isim ver:
| İsim | JSON Path |
|---|---|
ascendant | $.data.houses.ascendant |
sunLongitude | $.data.planets[0].longitude |
moonLongitude | $.data.planets[1].longitude |
offsetUsed | $.data.input.timezoneOffset |
İşaret, 30’a bölünmüş ve aşağı yuvarlanmış uzunluktur, bu 12 isimlik bir listedeki indeks gibidir: örneğin Ascendant 159.26 5 verir, yani Başak. Dört satırlık bir özel fonksiyon ya da 12 satırlık bir liste ve indeks yeterlidir.
Web derlemesi tarayıcıdan bize erişemez
Section titled “Web derlemesi tarayıcıdan bize erişemez”2026-09-17 tarihinde dış bir alan adındaki bir sayfadan ölçüldü: POST /v1/chart preflight isteğine access-control-allow-origin başlığı olmadan yanıt veriyor ve Chrome isteği engelliyor. Dış alan adındaki tarayıcı yalnızca /v1/public/* ve /v1/embed/*’e yanıt alıyor.
FlutterFlow, Run ve Test modlarında, tasarımcı içinde kendi proxy’si üzerinden çağrılar yapar, bu yüzden orada çalışan bir çağrı, web uygulaması yayınlandıktan sonra başarısız olabilir. İki çözüm var ve ilkini öneriyoruz:
- Çağrıyı özel yap, yukarıdaki gibi. Böylece Cloud Function içinde çalışır, tarayıcıda değil ve hem anahtar hem de CORS sorunu anında çözülür.
- Kendi backend’inizi bize koyun, zaten varsa. FlutterFlow’da proxy ayarları, kendi proxy URL’nizle birlikte, tasarımcı ve Run/Test modları için belgelenmiştir; yayınlanmış web derlemesi hakkında dokümantasyon bir şey söylemez, bu yüzden onlara güvenmemelisiniz.
Public anahtar pk_ bu sorunu çözmez: sadece /v1/public/* ve /v1/embed/* alır, iOS ve Android derlemelerinden ise tamamen reddedilir, çünkü web-origin göndermezler.
Hatalar
Section titled “Hatalar”401özel çağrıda: anahtar grup üzerinde, çağrı üzerinde değil.400 INVALID_FIELDtimezoneiçindedetails: bölge boş, buESTgibi bir kısaltma ya da bölge adı değil.400dateveyatimeiçindedetails: formatYYYY-MM-DD/HH:MM:SSdeğil.403 ENDPOINT_NOT_IN_SCOPE: anahtar alanındachartyok.429 KEY_BUDGET_EXHAUSTED: anahtar bütçesini tüketti; kontrol panelinden artır.