Developers API & Widget
API Reference
RO

OAuth

Configurați fluxul OAuth

Utilizatorul se autentifică la Wealth Reader, revine la redirect_uri cu un code, iar dumneavoastră îl schimbați cu același JSON ca la callback-ul iframe.

Folosiți această cale dacă nu puteți îngloba iframe-ul (aplicație nativă sau un flux prin redirecționare). Dacă aplicația web poate găzdui un iframe, folosiți în schimb iframe frontend.

Calea rapidă

  1. Autorizați domeniul cu access_type=oauth.
  2. Generați nonce, state și code_verifier. Calculați challenge_code. Codificați wr_conf în hexazecimal. Stocați nonce și code_verifier.
  3. Redirecționați utilizatorul către https://oauth.wealthreader.com/oauth2/ cu acei parametri.
  4. Primiți un GET pe redirect_uri cu nonce și code.
  5. Faceți POST la https://oauth.wealthreader.com/token/ și obțineți payload-ul bancar.

1. Autorizați domeniul

domain trebuie să fie același URL pe care îl veți folosi ca redirect_uri și ca url_callback.

curl --location 'https://api.wealthreader.com/domains/' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'method=add' \
  --data-urlencode 'api_key=YOUR_API_KEY' \
  --data-urlencode 'domain=https://example.com/oauth/success.php' \
  --data-urlencode 'url_callback=https://example.com/oauth/success.php' \
  --data-urlencode 'access_type=oauth' \
  --data-urlencode 'tokenize=1'

Puteți înregistra domeniul și din zona de clienți, alegând integrarea OAuth.

2. Generați valorile challenge

Generați trei șiruri alfanumerice aleatoare de 41 de caractere (A-Za-z0-9) și convertiți-le în hexazecimal (bin2hex). Fiecare valoare hexazecimală are 82 de caractere.

Valoare Cum o obțineți Se trimite în
redirect_uri URL-ul de întoarcere, același pe care l-ați autorizat query și POST /token/
nonce 41 caractere → hex query; se întoarce în GET
state 41 caractere → hex query
code_verifier 41 caractere → hex doar POST /token/ (nu în query)
challenge_code SHA-256 al code_verifier (hex digest) query, ca challenge_code
wr_conf JSON-ul de configurare a selectorului → hex query

wr_conf acceptă aceleași câmpuri ca iframe frontend. Exemplu înainte de conversia în hexazecimal:

{
  "operation_id": "op_a1b2c3d4e5f6",
  "entities_to_display": [],
  "wait_full_response": true
}

Hexazecimalul acelui JSON:

7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d

Conversia lui wr_conf în hexazecimal nu generează nonce, state sau code_verifier. Aceste trei valori se creează separat și trebuie să le persistați (cu cheia nonce) până la POST /token/.

Exemplu PHP, echivalent cu cel pe care îl folosim intern:

function randomAlnum($length)
{
    $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $value = '';
    for ($i = 0; $i < $length; $i++) {
        $value .= $alphabet[random_int(0, strlen($alphabet) - 1)];
    }
    return $value;
}

$nonce = bin2hex(randomAlnum(41));
$state = bin2hex(randomAlnum(41));
$code_verifier = bin2hex(randomAlnum(41));
$challenge_code = hash('sha256', $code_verifier);

$wr_conf = bin2hex(json_encode([
    'operation_id' => 'op_a1b2c3d4e5f6',
    'entities_to_display' => [],
    'wait_full_response' => true,
]));

3. Redirecționați utilizatorul

Construiți query-ul și redirecționați. Exemplu cu valori care se potrivesc între ele:

https://oauth.wealthreader.com/oauth2/?challenge_code=c725133644f703a5f069a09583fa981eb5b8820071a4450f8d47ff8b1c6a879a
&code_challenge_method=S256
&redirect_uri=https://example.com/oauth/success.php
&response_type=code
&state=73684148464b3778795873626d724e62734749724336685a7a687854336c317934524f516831316a45
&nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&wr_conf=7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d

Utilizatorul vede selectorul de bănci, se autentifică, iar la final Wealth Reader îl trimite înapoi la redirect_uri.

4. Primiți GET-ul pe redirect_uri

https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a

Folosiți nonce pentru a recupera code_verifier stocat la pasul 2. Dacă nonce nu este unul emis de dumneavoastră, respingeți cererea.

5. Finalizați challenge-ul

curl --location --request POST 'https://oauth.wealthreader.com/token/' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode 'redirect_uri=https://example.com/oauth/success.php' \
  --data-urlencode 'code=1234567890abcdef1234567890abcdef1234567890a' \
  --data-urlencode 'code_verifier=6634413364504337675230375a624671644f644d42414241303037737374684f494877477649723433'
Câmp Valoare
grant_type authorization_code
redirect_uri Exact același ca la pasul 3
code Cel din GET
code_verifier Valoarea hexazecimală generată la pasul 2

Dacă valorile se potrivesc, răspunsul este JSON-ul bancar (aceeași schemă ca la callback-ul iframe): success, payload și statistics (operation_id, token, code).

Stocați token și code dacă veți reîmprospăta ulterior cu POST https://api.wealthreader.com/entities/.

Cod de exemplu

Există un exemplu în Java (JBang / Java 17) care generează parametrii și finalizează challenge-ul:

Descărcați exemplul Java (ZIP)

Dacă aveți nevoie de același flux în alt limbaj, scrieți la support@wealthreader.com.

Ultima actualizare