OAuth
Настройте поток OAuth
Пользователь аутентифицируется в Wealth Reader, возвращается на ваш redirect_uri с code , и вы обмениваете его на JSON той же структуры , что и iframe callback .
Используйте этот путь, если не можете встроить iframe (нативное приложение или поток перенаправления). Если ваше веб-приложение может монтировать iframe, используйте Фронтенд iframe вместо этого.
Fast Track
- Авторизуйте домен с помощью
access_type=oauth. - Генерирует
nonce,stateиcode_verifier. Вычисляетchallenge_code. Кодируетwr_confв шестнадцатеричном виде. Сохраняетnonceиcode_verifier. - Перенаправьте пользователя на
https://oauth.wealthreader.com/oauth2/с этими параметрами. - Получите запрос
GETнаredirect_uriс параметрамиnonceиcode. - Сделай
POSThttps://oauth.wealthreader.com/token/и возьми payload из банка.
1. Авторизовать домен
domain должен быть тем же URL, который вы будете использовать как redirect_uri и как 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'
Вы также можете зарегистрировать доменную запись через Зона обслуживания клиентов Выбирая интеграцию OAuth.
2. Генерируйте значения челленджа
Сгенерируйте три случайные строки по 41 буквенно-цифровому символу (A-Za-z0-9) и преобразуйте их в шестнадцатеричный вид (bin2hex). Каждое шестнадцатеричное значение содержит 82 символа.
| Значение | Как получить | Где передаётся |
|---|---|---|
redirect_uri |
Ваш возвратный URL, тот же, который вы утвердили | Запрос и POST /token/ |
nonce |
41 символ → шестнадцатеричная запись | запрос; вернись в GET |
state |
41 символ → шестнадцатеричная запись | Запрос |
code_verifier |
41 символ → шестнадцатеричная запись | только POST /token/ (не в запросе) |
challenge_code |
SHA-256 от code_verifier (шестнадцатеричный дайджест) |
Query, как challenge_code |
wr_conf |
JSON конфигурации селектора банков → шестнадцатеричная запись | Query |
wr_conf поддерживает те же поля, что и Фронтенд iframe. Пример перед переходом к шестнадцатеричному:
{
"operation_id": "op_a1b2c3d4e5f6",
"entities_to_display": [],
"wait_full_response": true
}
Шестинадцатеричное JSON:
7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Преобразование wr_conf в шестнадцатеричное не даёт nonce, state или code_verifier. Эти три значения создаются отдельно, и их нужно сохранять (связанные с nonce) до POST /token/.
Пример в PHP, эквивалентный тому, который мы используем внутри:
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. Перенаправить пользователя
Постройте запрос и перенаправите. Пример с соответствующими значениями:
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
Пользователь видит селектор банка, аутентифицируется и после завершения Wealth Reader возвращает его на ваш redirect_uri.
4. Получите GET в redirect_uri
https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a
Используйте nonce , чтобы вернуть code_verifier , сохранённый на шаге 2. Если nonce не тот, который вы выдали — отклоните запрос.
5. Выполнить испытание
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'
| Поле | Ценность |
|---|---|
grant_type |
authorization_code |
redirect_uri |
Точно так же, как и на шаг 3 |
code |
Тот, что с GET |
code_verifier |
Шестнадцатеричное значение, созданное на шаге 2 |
Если значения совпадают, ответ — JSON банка (та же схема, что и у callback iframe): success, payload и statistics (operation_id, token, code).
Сохраните token и code , если собираетесь обновить POST https://api.wealthreader.com/entities/позже.
Пример кода
Есть пример в Java (JBang/Java 17), который генерирует параметры и завершает задачу:
Если вам нужен такой же поток на другом языке, напишите нам по адресу support@wealthreader.com.