Salt la conținutul principal
Dacă publici pentru mai multe agenții, nu le cere să-și facă o cheie și să ți-o trimită. Integrezi butonul Conectează cu Housera: agentul se autentifică pe housera.ro, vede ce cere aplicația ta și acceptă, iar tu primești cheia contului lui direct, server la server. Agenția îți vede legătura în cont și o poate deconecta oricând. Fluxul e OAuth 2.0 cu cod de autorizare și PKCE (RFC 6749, RFC 7636), deci orice bibliotecă OAuth îl poate face. Pașii de mai jos îl arată fără bibliotecă.

Înainte de toate: aprobarea

Accesul de integrator îl dă Housera. Scrie-ne la office@housera.ro cu:
  • numele aplicației, așa cum vrei să-l vadă agențiile;
  • site-ul;
  • adresele de întoarcere (redirect_uri), exact cum le vei trimite. Le comparăm caracter cu caracter, fără wildcard. Acceptăm doar https, plus http://localhost pentru dezvoltare;
  • drepturile de care ai nevoie (listings:read, listings:write, media:write);
  • opțional, o adresă https de webhook pentru evenimentele conturilor conectate.
Primești client_id (hsrc_…), client_secret (hsrs_…) și, dacă ai cerut webhook, secretul lui (whsec_…). Le primești o singură dată; păstrează-le doar pe server. Pentru sandbox primești date separate, pe staging.housera.ro.
client_secret nu ajunge niciodată în browser, într-o aplicație mobilă sau într-un depozit de cod. Oricine îl are poate schimba coduri în numele tău.

Fluxul

1

Pregătești cererea

Pentru fiecare conectare generezi două valori aleatoare și le păstrezi în sesiunea agentului, pe serverul tău:
  • state: protejează împotriva cererilor falsificate; îl verifici la întoarcere;
  • code_verifier: 43–128 de caractere din A-Z a-z 0-9 - . _ ~. Din el calculezi code_challenge = BASE64URL(SHA256(code_verifier)), fără = la final.
2

Trimiți agentul pe pagina de acord

Redirecționezi browserul agentului la:
În sandbox, adresa e https://staging.housera.ro/setari/api/conectare. Staging-ul nu e deschis publicului: pentru testele tale îți dăm, la cerere, un cont de test cu acces la el. Varianta în engleză, /en/settings/api/connect, e echivalentă.scope e opțional: fără el ceri toate drepturile pe care Housera ți le-a aprobat. Nu poți cere mai mult de atât, iar catalogul platformei nu se acordă niciodată prin conectare.
3

Agentul acceptă sau refuză

Dacă agentul nu e autentificat, housera.ro îi cere întâi să intre în cont. Apoi vede numele aplicației tale, contul sau agenția pentru care acordă accesul, drepturile și domeniul la care se întoarce.Browserul revine la adresa ta de întoarcere:
  • la acord: https://crm.exemplu.ro/housera/callback?code=…&state=…;
  • la refuz: …?error=access_denied&state=….
Verifici că state e cel din sesiune. Dacă nu e, oprești fluxul.
4

Schimbi codul pe cheie, de pe server

Codul expiră în 60 de secunde și merge o singură dată. Îl trimiți imediat la POST /oauth/token:
Poți trimite client_id și client_secret și prin HTTP Basic, în loc de corp.
5

Lucrezi cu cheia, ca orice cheie

Păstrezi access_token și connection_id lângă agenția din CRM-ul tău și folosești cheia exact ca în restul documentației: Authorization: Bearer …. Aceleași reguli, aceleași limite, aceeași moderare.

Ce se întâmplă cu anunțurile

  • Anunțurile pe care le publici sunt ale agenției. Agenții le pot edita și din portal; atunci primești listing.edited_in_portal și noul etag.
  • Id-urile tale (PUT /listings/ref/{ref}) sunt doar ale tale: două CRM-uri conectate la aceeași agenție nu se încurcă, chiar dacă folosesc aceleași id-uri.
  • În jurnalul cererilor, agenția vede fiecare cerere făcută prin legătura ta, cu numele aplicației.

Evenimentele

Dacă ai declarat un webhook la aprobare, primești pe el evenimentele tuturor conturilor conectate, semnate cu secretul webhook-ului (vezi Webhook-uri). Fiecare livrare are în plus câmpul connection, egal cu connection_id din răspunsul de la schimbul de cod:
Fără webhook, recuperezi evenimentele fiecărui cont cu GET /events?after=…, folosind cheia lui.

Expirarea și deconectarea

  • Cheia expiră după 365 de zile (expires_in). Înainte de termen, treci agentul din nou prin pagina de acord: noua cheie o înlocuiește pe cea veche.
  • O nouă conectare a aceluiași cont îți dă o cheie nouă și o invalidează pe cea veche.
  • Agenția te poate deconecta din Setări → API → Aplicații conectate. Din clipa aceea, cheia primește 401 unauthenticated, iar webhook-ul nu mai primește evenimentele contului. Tratezi 401 ca pe o deconectare și îi propui agentului să se reconecteze.
  • Dacă Housera îți dezactivează accesul, toate cheile tale primesc 401 până la reactivare.

Erori

Pe pagina de acord, cât timp aplicația sau adresa de întoarcere nu sunt confirmate, eroarea rămâne pe housera.ro și nu ajunge la tine: Odată confirmate, erorile revin la adresa ta de întoarcere, cu error și state: La POST /oauth/token, erorile au forma RFC 6749, {"error": "…", "error_description": "…"}: