Developers API & Widget
API Reference
IT

OAuth

Configura il flusso OAuth

L’utente si autentica su Wealth Reader, torna al vostro redirect_uri con un code e voi lo scambiate con lo stesso JSON del callback iframe.

Usate questo percorso se non potete incorporare l’iframe (app nativa o flusso con redirect). Se la vostra applicazione web può ospitare un iframe, usate invece iframe frontend.

Percorso rapido

  1. Autorizate il dominio con access_type=oauth.
  2. Generate nonce, state e code_verifier. Calcolate challenge_code. Codificate wr_conf in esadecimale. Memorizzate nonce e code_verifier.
  3. Reindirizzate l’utente a https://oauth.wealthreader.com/oauth2/ con quei parametri.
  4. Ricevete un GET sul vostro redirect_uri con nonce e code.
  5. Fate POST a https://oauth.wealthreader.com/token/ e ottenete il payload bancario.

1. Autorizzare il dominio

domain deve essere lo stesso URL che userete 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=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'

Potete anche registrare il dominio dall’area clienti scegliendo l’integrazione OAuth.

2. Generare i valori della challenge

Generate tre stringhe alfanumeriche casuali di 41 caratteri (A-Za-z0-9) e convertitele in esadecimale (bin2hex). Ogni valore esadecimale è lungo 82 caratteri.

Valore Come ottenerlo Inviato in
redirect_uri Il vostro URL di ritorno, lo stesso che avete autorizzato query e POST /token/
nonce 41 chars → hex query; restituito nel GET
state 41 chars → hex query
code_verifier 41 chars → hex solo POST /token/ (non nella query)
challenge_code SHA-256 di code_verifier (digest hex) query, come challenge_code
wr_conf JSON di configurazione del selettore → hex query

wr_conf accetta gli stessi campi di iframe frontend. Esempio prima della conversione in esadecimale:

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

Esadecimale di quel JSON:

7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d

Convertire wr_conf in esadecimale non genera nonce, state o code_verifier. Quei tre valori si creano a parte e dovete persistirli (indicizzati per nonce) fino al POST /token/.

Esempio 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

Costruite la query e reindirizzate. 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 di banche, si autentica e, al termine, Wealth Reader lo riporta al vostro redirect_uri.

4. Ricevere il GET su redirect_uri

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

Usate il nonce per recuperare il code_verifier memorizzato al passo 2. Se il nonce non è uno di quelli che avete emesso, scartate la richiesta.

5. Completare la challenge

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 lo stesso del passo 3
code Quello del GET
code_verifier Il valore esadecimale generato al passo 2

Se i valori coincidono, la risposta è il JSON bancario (stesso schema del callback iframe): success, payload e statistics (operation_id, token, code).

Memorizzate token e code se in seguito aggiornerete con POST https://api.wealthreader.com/entities/.

Codice di esempio

Esiste un esempio Java (JBang / Java 17) che genera i parametri e completa la challenge:

Scarica l’esempio Java (ZIP)

Se vi serve lo stesso flusso in un altro linguaggio, scrivete a support@wealthreader.com.

Ultimo aggiornamento