OAuth
Configura el flux OAuth
L'usuari s'autentica a Wealth Reader, torna al teu redirect_uri amb un code , i tu el bescanvies pel mateix JSON que el callback iframe.
Utilitza aquest camí si no pots incrustar l'iframe (aplicació nativa o un flux de redirecció). Si la teva aplicació web pot muntar un iframe, utilitza Interfície iframe en canvi.
Fast Track
- Autoritza el domini amb
access_type=oauth. - Genera
nonce,stateicode_verifier. Calculachallenge_code. Codificawr_confen hexadecimal. Desanonceicode_verifier. - Redirigeix l'usuari a
https://oauth.wealthreader.com/oauth2/amb aquests paràmetres. - Rep una petició
GETa la tevaredirect_uriambnonceicode. - Fes-
POSThttps://oauth.wealthreader.com/token/i aconsegueix el payload al banc.
1. Autoritzar el domini
La domain hauria de ser la mateixa URL que utilitzaràs com a redirect_uri i com a 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'
També pots registrar el domini des de la Àrea de Client triant integració OAuth.
2. Generar els valors del repte
Genera tres cadenes aleatòries de 41 caràcters alfanumèrics de text (A-Za-z0-9) i converteix-les a hexadecimals (bin2hex). Cada valor hexadecimal té 82 caràcters de text.
| Valor | Com s'obté | S'envia a |
|---|---|---|
redirect_uri |
La teva URL de retorn, la mateixa que vas autoritzar | consulta i POST /token/ |
nonce |
41 caràcters → hexadecimal | consulta; torna a la GET |
state |
41 caràcters → hexadecimal | Consulta |
code_verifier |
41 caràcters → hexadecimal | només POST /token/ (no a la consulta) |
challenge_code |
code_verifier SHA-256 (resum hexadecimal) |
consulta, com challenge_code |
wr_conf |
→ Configuració del selector hexadecimal JSON | Consulta |
wr_conf admet els mateixos camps que el Interfície iframe. Exemple abans de passar a hexadecimal:
{
"operation_id": "op_a1b2c3d4e5f6",
"entities_to_display": [],
"wait_full_response": true
}
Hexadecimal d'aquest JSON:
7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Convertir wr_conf a hexadecimal no genera nonce, state ni code_verifier. Aquests tres valors es creen per separat i els has de mantenir (associats a la nonce) fins a la POST /token/.
Exemple en PHP, equivalent al que fem servir internament:
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. Redirigir l'usuari
Construeix la consulta i redirigeix. Exemple amb valors consistents entre si:
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
L'usuari veu el selector bancari, s'autentica i, quan acaba, Wealth Reader el retorna a la teva redirect_uri.
4. Rep el GET en redirect_uri
https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a
Utilitza el nonce per recuperar el code_verifier que has guardat al pas 2. Si el nonce no és el que vas emetre, descarta la sol·licitud.
5. Completar el repte
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'
| Camp | Valor |
|---|---|
grant_type |
authorization_code |
redirect_uri |
Exactament igual que el pas 3 |
code |
El que té el GET |
code_verifier |
L'hexadecimal que vas generar al pas 2 |
Si els valors coincideixen, la resposta és el JSON del banc (el mateix esquema que el callback de l'iframe): success, payload i statistics (operation_id, token, code).
Guarda token i code si penses refrescar amb POST https://api.wealthreader.com/entities/més endavant.
Codi d'exemple
Hi ha un exemple en Java (JBang/Java 17) que genera els paràmetres i completa el repte:
Descarrega una mostra de Java (ZIP)
Si necessites el mateix flux en un altre idioma, escriu-nos a support@wealthreader.com.