OAuth
Imposta il flusso OAuth
L'utente si autentica su Wealth Reader e torna al tuo redirect_uri con un code, che il tuo backend scambia con lo stesso JSON restituito dal callback dell'iframe.
Usa questo percorso se non puoi incorporare l'iframe (app nativa o un flusso di redirezione). Se la tua web app può montare un iframe, usa Frontend iframe invece.
Fast Track
- Autorizza il dominio con
access_type=oauth. - Genera
nonce,stateecode_verifier. Calcolachallenge_code. Codificawr_confin esadecimale. Salvanonceecode_verifier. - Reindirizza l'utente a
https://oauth.wealthreader.com/oauth2/con quei parametri. - Ricevi una richiesta
GETalla tuaredirect_uriconnonceecode. - Fai
POSThttps://oauth.wealthreader.com/token/e prendi il payload dalla banca.
1. Autorizzare il dominio
Il domain dovrebbe essere lo stesso URL che userai come redirect_uri e come 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'
Puoi anche registrare l'account di dominio dal Area Clienti scegliendo integrazione OAuth.
2. Generare i valori della sfida
Genera tre stringhe casuali di 41 caratteri alfanumerici (A-Za-z0-9) e convertile in esadecimale (bin2hex). Ogni valore esadecimale ha 82 caratteri di testo.
| Valore | Come viene ottenuto | Inviato in |
|---|---|---|
redirect_uri |
Il tuo URL di ritorno, lo stesso che hai autorizzato | Query e POST /token/ |
nonce |
41 caratteri → esadecimale | domanda; torna in GET |
state |
41 caratteri → esadecimale | Query |
code_verifier |
41 caratteri → esadecimale | Solo POST /token/ (non nella query) |
challenge_code |
code_verifier SHA-256 (hash esadecimale) |
Domanda come challenge_code |
wr_conf |
→ Configurazione del selettore esadecimale JSON | Query |
wr_conf supporta gli stessi campi del Frontend iframe. Esempio prima di passare all'esadecimale:
{
"operation_id": "op_a1b2c3d4e5f6",
"entities_to_display": [],
"wait_full_response": true
}
Esadecimale di quella JSON:
7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Convertire wr_conf in esadecimale non genera nonce, state o code_verifier. Questi tre valori vengono creati separatamente e devi persistere (associati al nonce) fino al POST /token/.
Esempio in PHP, equivalente a quello che usiamo internamente:
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. Reindirizzare l'utente
Costruisci la query e reindirizza. Esempio con valori coerenti tra loro:
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'utente vede il selettore bancario, si autentica e, una volta terminato, Wealth Reader lo restituisce al proprio redirect_uri.
4. Ricevere il GET in redirect_uri
https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a
Usa il nonce per recuperare il code_verifier che hai salvato nel passo 2. Se il nonce non è quello che hai emesso, annulla la richiesta.
5. Completare la sfida
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'
| Campo | Valore |
|---|---|
grant_type |
authorization_code |
redirect_uri |
Esattamente come il passo 3 |
code |
Quello con il GET |
code_verifier |
Il valore esadecimale che hai generato nel passo 2 |
Se i valori corrispondono, la risposta è il JSON della banca (stesso schema del callback dell'iframe): success, payload e statistics (operation_id, token, code).
Salva token e code se hai intenzione di aggiornare con POST https://api.wealthreader.com/entities/più avanti.
Codice di esempio
Esiste un esempio in Java (JBang/Java 17) che genera i parametri e completa la sfida:
Scarica il Campione Java (ZIP)
Se hai bisogno dello stesso flusso in un'altra lingua, scrivici a support@wealthreader.com.