OAuth
Configurează fluxul OAuth
Utilizatorul se autentifică la Wealth Reader, se întoarce la redirect_uri ta cu un code iar backend-ul tău îl schimbă pentru același JSON ca iframe callback .
Folosește această cale dacă nu poți încorpora iframe-ul (aplicație nativă sau flux de redirecționare). Dacă aplicația ta web poate monta un iframe, folosește Frontend iframe în schimb.
Fast Track
- Autorizează domeniul cu
access_type=oauth. - Generează
nonce,stateșicode_verifier. Calculeazăchallenge_code. Codificăwr_confîn hexazecimal. Salveazănonceșicode_verifier. - Redirecționează utilizatorul către
https://oauth.wealthreader.com/oauth2/cu acești parametri. - Primește o cerere
GETlaredirect_uricunonceșicode. - Fă
POSThttps://oauth.wealthreader.com/token/și ia payload de la bancă.
1. Autorizarea domeniului
Mesajul domain ar trebui să fie același URL pe care îl vei 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=TU_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'
De asemenea, poți înregistra contul de domeniu din Zona Clienți prin alegerea integrării OAuth.
2. Generează valorile provocării
Generează trei șiruri aleatorii de 41 de caractere alfanumerice de text (A-Za-z0-9) și convertește-le în hexazecimale (bin2hex). Fiecare valoare hexazecimală are 82 de caractere de text.
| Valoare | Cum se obține | Se trimite în |
|---|---|---|
redirect_uri |
URL-ul tău de returnare, același pe care l-ai autorizat | Interogare și POST /token/ |
nonce |
41 de caractere → hexazecimal | Întrebare; Întoarce-te în GET |
state |
41 de caractere → hexazecimal | Interogare |
code_verifier |
41 de caractere → hexazecimal | Doar POST /token/ (nu în interogare) |
challenge_code |
code_verifier SHA-256 (hash hexazecimal) |
interogare, ca challenge_code |
wr_conf |
Configurația JSON a selectorului → hexazecimal | Interogare |
wr_conf suportă aceleași câmpuri ca și Frontend iframe. Exemplu înainte de a trece la hexazecimal:
{
"operation_id": "op_a1b2c3d4e5f6",
"entities_to_display": [],
"wait_full_response": true
}
Hexazecimală a acelui JSON:
7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Conversia wr_conf în hexazecimal nu generează nonce, state sau code_verifier. Aceste trei valori sunt create separat și trebuie să le păstrezi (asociate cu nonce) până la POST /token/.
Exemplu în 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ționează utilizatorul
Construiește interogarea și redirecționează. Exemplu cu valori consistente î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 bancar, se autentifică și, când termină, îl returnează Wealth Reader la redirect_uridumneavoastră.
4. Primește GET în redirect_uri
https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a
Folosește nonce pentru a recupera code_verifier pe care l-ai salvat la pasul 2. Dacă nonce nu este cel pe care l-ai emis, respinge cererea.
5. Finalizează provocarea
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 la fel ca la pasul 3 |
code |
Cel cu GET |
code_verifier |
Hex-ul pe care l-ai generat la pasul 2 |
Dacă valorile se potrivesc, răspunsul este JSON băncii (aceeași schemă ca și callback iFrame-ului): success, payload și statistics (operation_id, token, code).
Salvează token și code dacă vrei să reîmprospătezi cu POST https://api.wealthreader.com/entities/mai târziu.
Cod exemplu
Există un exemplu în Java (JBang/Java 17) care generează parametrii și finalizează provocarea:
Dacă ai nevoie de același flux într-o altă limbă, scrie-ne la support@wealthreader.com.