search a ads

This commit is contained in:
JiriUhlir
2026-06-18 12:43:42 +02:00
parent 9cd5c8011b
commit 125b112967
12 changed files with 748 additions and 191 deletions
+56 -39
View File
@@ -15,14 +15,15 @@ from fastapi import FastAPI
from . import config
from .errors import register_exception_handlers
from .logging_config import get_logger
from .routers import ga_admin, ga_data, meta, sklik
from .routers import ga_admin, ga_data, googleads, gsc, meta, sklik
logger = get_logger(__name__)
ROOT_PATH = os.getenv("ROOT_PATH", "")
DESCRIPTION = """
Stateless proxy exposing **Google Analytics 4** and **Sklik** (Seznam) APIs.
Stateless proxy exposing **Google Analytics 4**, **Google Search Console**,
**Google Ads** and **Sklik** (Seznam) APIs.
Veškeré přihlašovací údaje se posílají v každém requestu jako `X-` hlavičky
služba si nic neukládá. Vyplníte je v Swaggeru po kliknutí na **Try it out**.
@@ -31,65 +32,79 @@ služba si nic neukládá. Vyplníte je v Swaggeru po kliknutí na **Try it out*
| --- | --- | --- |
| Google Analytics | `X-GA-Access-Token` **nebo** `X-GA-Credentials` | jedna z nich |
| Google Analytics | `X-GA-Quota-Project` | ne |
| Search Console | `X-GSC-Access-Token` **nebo** `X-GSC-Credentials` | jedna z nich |
| Search Console | `X-GSC-Quota-Project` | ne |
| Google Ads | `X-GAds-Developer-Token` | ano |
| Google Ads | `X-GAds-Access-Token` **nebo** `X-GAds-Credentials` | jedna z nich |
| Google Ads | `X-GAds-Login-Customer-Id`, `X-GAds-Quota-Project` | ne |
| Sklik | `X-Sklik-Token` | ano |
| Sklik | `X-Sklik-User-Id` | ne (jen pro agenturní/MCC přístup) |
Tři Google služby používají stejný princip přihlášení (Google OAuth) liší se
jen prefixem hlavičky a oprávněním (scope). **Jeden service account lze použít
pro všechny tři** (stačí mu udělit přístup v dané službě a povolit příslušné
API). U Google Ads navíc vždy potřebujete *developer token*.
---
## Kde vzít přihlašovací údaje
### 🔹 Google Analytics 4
Potřebujete dvě věci: **přístup k API** a **ID property** (číslo, na které se
ptáte).
**ID property** (`property_id` v URL): v GA4 vpravo dole **Administrace →
Nastavení property** nahoře je *ID property*, např. `123456789`.
Pro přístup máte dvě možnosti (stačí jedna):
**A) Service account doporučeno pro automatizaci (`X-GA-Credentials`)**
### 🔹 Společné pro všechny Google služby přístup přes service account
1. [Google Cloud Console](https://console.cloud.google.com/) → vytvořte nebo
vyberte projekt.
2. **APIs & Services → Library** → povolte **Google Analytics Data API**
a **Google Analytics Admin API**.
2. **APIs & Services → Library** → povolte API podle toho, co budete volat:
*Google Analytics Data API* + *Google Analytics Admin API*,
*Google Search Console API*, *Google Ads API*.
3. **IAM & Admin → Service Accounts → Create service account**.
4. U vytvořeného účtu **Keys → Add key → Create new key → JSON** stáhne se
soubor s klíčem.
5. Z JSON souboru zkopírujte `client_email` a v GA4 ho přidejte k property:
**Administrace → Správa přístupu k property → +** , role **Viewer**
(Čtenář).
6. Celý JSON soubor zakódujte do **base64** a vložte do hlavičky
`X-GA-Credentials`:
4. U účtu **Keys → Add key → Create new key → JSON** stáhne se klíč.
5. Klíč zakódujte do **base64** a vložte do příslušné `*-Credentials` hlavičky:
- Windows PowerShell:
`[Convert]::ToBase64String([IO.File]::ReadAllBytes("klic.json"))`
- Linux/macOS: `base64 -w0 klic.json`
**B) Hotový OAuth2 token pro rychlý test (`X-GA-Access-Token`)**
Service account (jeho `client_email` z JSON) pak musíte **přidat jako uživatele
v dané službě** viz níže. Místo service accountu lze vždy poslat i hotový
OAuth2 *access token* v `*-Access-Token` (např. z
[OAuth Playground](https://developers.google.com/oauthplayground/) se správným
scope); platí ~1 hodinu.
1. [OAuth 2.0 Playground](https://developers.google.com/oauthplayground/).
2. Vlevo zadejte scope `https://www.googleapis.com/auth/analytics.readonly`
a klikněte **Authorize APIs** (přihlaste se Google účtem, který má přístup
k property).
3. **Exchange authorization code for tokens** → zkopírujte *Access token* do
hlavičky `X-GA-Access-Token`. Pozor: platí jen ~1 hodinu.
### 🔹 Google Analytics 4 (`X-GA-*`)
### 🔹 Sklik
- **ID property** (`property_id` v URL): GA4 → **Administrace → Nastavení
property** → *ID property*, např. `123456789`.
- Přístup: service account `client_email` přidejte v **Administrace → Správa
přístupu k property** jako **Viewer**. Scope: `analytics.readonly`.
Potřebujete **API token (klíč)** z účtu, jehož data chcete číst.
### 🔹 Google Search Console (`X-GSC-*`)
- **siteUrl**: adresa property, buď URL-prefix (`https://example.com/`) nebo
doménová property (`sc-domain:example.com`). Posílá se jako parametr `siteUrl`.
- Přístup: v [Search Console](https://search.google.com/search-console) →
**Nastavení → Uživatelé a oprávnění** přidejte `client_email` service accountu
(role *Full* nebo *Restricted*). Scope: `webmasters.readonly`.
### 🔹 Google Ads (`X-GAds-*`)
- **Developer token** (`X-GAds-Developer-Token`, povinný): v **Google Ads
manager (MCC) účtu → Tools → API Center**. Token musí mít schválený přístup.
- **customer_id** (v URL): 10místné číslo účtu (bez pomlček).
- **login-customer-id** (`X-GAds-Login-Customer-Id`, volitelné): ID manager
(MCC) účtu, přes který přistupujete k podřízenému účtu.
- Přístup: nejjednodušší je poslat hotový OAuth2 *access token* se scope
`https://www.googleapis.com/auth/adwords` v `X-GAds-Access-Token`.
Service account funguje jen s *domain-wide delegation*.
### 🔹 Sklik (`X-Sklik-Token`)
1. Přihlaste se na [sklik.cz](https://www.sklik.cz/).
2. Vpravo nahoře klikněte na **své uživatelské jméno → Nastavení**.
3. V nastavení účtu otevřete sekci **Přístup k API Drak**.
4. Klikněte na **Zobrazit token** a token zkopírujte do hlavičky
`X-Sklik-Token`.
2. Vpravo nahoře **své uživatelské jméno → Nastavení**.
3. Sekce **Přístup k API Drak** → **Zobrazit token**.
4. Token zkopírujte do hlavičky `X-Sklik-Token`.
> ⚠️ Každé vygenerování nového tokenu **zneplatní ten předchozí**. Token je
> vázaný na účet, pod kterým jste přihlášeni.
>
> Spravujete-li cizí účty (agentura/MCC), vložte cílové `userId` do hlavičky
> `X-Sklik-User-Id`.
> vázaný na účet, pod kterým jste přihlášeni. Pro správu cizích účtů
> (agentura/MCC) vložte cílové `userId` do hlavičky `X-Sklik-User-Id`.
---
@@ -108,6 +123,8 @@ register_exception_handlers(app)
app.include_router(meta.router)
app.include_router(ga_data.router)
app.include_router(ga_admin.router)
app.include_router(gsc.router)
app.include_router(googleads.router)
app.include_router(sklik.router)
logger.info(