Developers API & Widget
API Reference
PT

OAuth

Configure o fluxo OAuth

O usuário autentica para Wealth Reader, retorna ao seu redirect_uri com um code e você resgata pelo mesmo JSON que o iframe callback .

Use esse caminho se não puder incorporar o iframe (app nativo ou um fluxo de redirecionamento). Se seu app web conseguir montar um iframe, use Frontend iframe em vez disso.

Fast Track

  1. Autorize o domínio com access_type=oauth.
  2. Gera nonce, state e code_verifier. Calcula challenge_code. Codifica wr_conf em hexadecimal. Salva nonce e code_verifier.
  3. Redirecione o usuário para https://oauth.wealthreader.com/oauth2/ com esses parâmetros.
  4. Receba uma requisição GET em redirect_uri com nonce e code.
  5. Faça POST https://oauth.wealthreader.com/token/ e pegue o payload no banco.

1. Autorizar o domínio

A domain deve ser a mesma URL que você usará como redirect_uri e como 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'

Você também pode registrar a conta do domínio a partir do Área de Atendimento ao escolher integração OAuth.

2. Gerar os valores do desafio

Gerar três cadeias aleatórias de 41 caracteres alfanuméricos de texto (A-Za-z0-9) e convertê-las para hexadecimais (bin2hex). Cada valor hexadecimal possui 82 caracteres de texto.

Valor Como ela é obtida Enviado em
redirect_uri Sua URL de retorno, a mesma que você autorizou Consulta e POST /token/
nonce 41 caracteres → hexadecimal consulta; volte na GET
state 41 caracteres → hexadecimal Consulta
code_verifier 41 caracteres → hexadecimal apenas POST /token/ (não na consulta)
challenge_code SHA-256 de code_verifier (hash em hexadecimal) Query, como challenge_code
wr_conf JSON de configuração do seletor → hexadecimal Query

wr_conf suporta os mesmos campos que o Frontend iframe. Exemplo antes de passar para hexadecimal:

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

Hexadecimal desse JSON:

7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d

Converter wr_conf para hexadecimal não gera nonce, state ou code_verifier. Esses três valores são criados separadamente e você precisa mantê-los (associados ao nonce) até o POST /token/.

Exemplo em PHP, equivalente ao que usamos 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. Redirecionar o usuário

Construa a consulta e redireciona. Exemplo com valores consistentes 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

O usuário vê o seletor bancário, autentica e, ao terminar, Wealth Reader o devolve ao seu redirect_uri.

4. Receba a GET em redirect_uri

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

Use o nonce para recuperar o code_verifier que você salvou na etapa 2. Se o nonce não for o que você emitiu, rejeite o pedido.

5. Complete o desafio

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 Valor
grant_type authorization_code
redirect_uri Exatamente igual ao passo 3
code Aquele com a GET
code_verifier O valor hexadecimal que você gerou no passo 2

Se os valores coincidirem, a resposta é o JSON do banco (mesmo esquema do callback do iframe): success, payload e statistics (operation_id, token, code).

Salve token e code se for atualizar com POST https://api.wealthreader.com/entities/depois.

Código de Exemplo

Existe um exemplo em Java (JBang/Java 17) que gera os parâmetros e completa o desafio:

Baixe Exemplo de Java (ZIP)

Se você precisar do mesmo fluxo em outro idioma, escreva para nós em support@wealthreader.com.

Última atualização