Developers API & Widget
API Reference
JA

OAuth

OAuth フローの設定

ユーザーは Wealth Reader で認証し、redirect_uri に戻ります。その際に受け取る code を、iframe の callback と同じ JSON に交換します。

iframe を埋め込めない場合(ネイティブアプリやリダイレクト方式)は、このフローを使用してください。Web アプリに iframe を埋め込める場合は、iframe フロントエンドを使用してください。

クイックスタート

  1. access_type=oauth を指定してドメインを許可します。
  2. nonce、state、code_verifier を生成します。challenge_code を計算します。wr_conf を 16 進数にエンコードします。nonce と code_verifier を保存します。
  3. これらのパラメーターを指定して https://oauth.wealthreader.com/oauth2/ にユーザーをリダイレクトします。
  4. GET リクエストを redirect_uri で受信します。nonce と code が含まれます。
  5. POST で https://oauth.wealthreader.com/token/ に送信し、銀行の payload を取得します。

1. ドメインを許可する

domain は、redirect_uri と url_callback に指定するものと同一の URLでなければなりません。

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)の文字列を 3 つ生成し、16 進数に変換します(bin2hex)。各 16 進数の値は 82 文字になります。

値 生成方法 送信先
redirect_uri 許可済み URL と同じ戻り先 URL クエリおよび POST /token/
nonce 41 文字 → 16 進数 クエリ。GET で戻る
state 41 文字 → 16 進数 クエリ
code_verifier 41 文字 → 16 進数 POST /token/ のみ(クエリには含めない)
challenge_code code_verifier の SHA-256(16 進数のダイジェスト) クエリの challenge_code
wr_conf 選択画面の設定 JSON → 16 進数 クエリ

wr_conf は iframe フロントエンドと同じフィールドを受け付けます。16 進数に変換する前の例:

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

この JSON の 16 進数表現:

7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d

wr_conf を 16 進数に変換しても、nonce、state、code_verifier は生成されません。これら 3 つの値は別に作成し、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. redirect_uri で GET を受信する

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

nonce を使って、手順 2 で保存した code_verifier を取得します。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 で生成した 16 進数の値

値が一致すると、銀行の JSON が返されます(iframe の callbackと同じスキーマ)。内容は success、payload、statistics(operation_id、token、code)です。

後でデータを更新する場合は token と code を保存し、POST https://api.wealthreader.com/entities/ を使用してください。

サンプルコード

パラメーターを生成してチャレンジを完了する Java の例(JBang / Java 17)があります。

Java の例をダウンロード(ZIP)

別の言語で同じフローが必要な場合は、support@wealthreader.com にご連絡ください。

最終更新