質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

650閲覧

楽天APIで残高を取得したい

kannnna

総合スコア7

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2023/10/26 22:38

実現したいこと

  • 楽天ウォレットAPIを利用して、保有している仮想通貨の種類と残高を取得したい

初心者の質問で申し訳ないのですが、ウォレットAPIについての記事が見当たらず、質問させていただきます。助けていただけると幸いです。

前提

APIキーは取得できています。

発生している問題・エラーメッセージ

エラーメッセージ {'code': 20001}

該当のソースコード

import requests # APIキーを設定 API_KEY = '************' API_SECRET = '************************' # 仮想通貨保有残高取得のAPIを呼び出す URL = "https://exchange.rakuten-wallet.co.jp/api/v1/cfd/order" import time # 現在のUnixタイムスタンプを取得する now = time.time() # ミリ秒を追加する millisecond = round(now * 1000) # 文字列に変換する NONCE = str(millisecond) # 結果を出力する print(NONCE) # 1698330103412 import hashlib # SECRETをバイナリに変換する SECRET = b"secret" # ハッシュアルゴリズムHMAC SHA-256を初期化 hasher = hashlib.sha256(SECRET) # ハッシュアルゴリズムに、SECRETと、ハッシュ化するデータを渡す hasher.update(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムを実行する digest = hasher.digest() # バイト配列を16進数に変換する SIGNATURE = digest.hex() # 結果を出力する print(SIGNATURE) # b424e2dbd1debe4b9adf75c0ed0815a44bc7136052b287f1d47ee3058ed5e4e1 headers = dict(API_KEY=API_KEY, NONCE=NONCE, SIGNATURE=SIGNATURE) response = requests.get(URL, headers=headers) # レスポンスを表示する data = response.json() print(data) # {'code': 20001}

試したこと

試しにグーグルバードに聞いてみましたが、取得できませんでした。

グーグルバードの提案 import requests # APIキーを設定 API_KEY = '**********' API_SECRET = '********************' # 仮想通貨保有残高取得のAPIを呼び出す URL = "https://wallet.rakuten.co.jp/api/v1/crypto/balances" headers = { "Authorization": "Bearer " + API_KEY, } response = requests.get(URL, headers=headers) # レスポンスを表示する data = response.json() print(data)

何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kannnna

2023/10/27 14:58

皆様ご回答大変ありがとうございます!助かります;; おかげで、20001のerrorは解消されたのですが、 {'code': 20006} という新たなエラーが発生してしまいました。。 認証エラー?の様なのですが、詳しい説明が楽天APIになくて困っています。 重ねて申し訳ないのですが、分かりそうであれば、教えて頂きたいです。。 20001で通ったコードは以下のとおりです。 import requests # APIキーを設定 API_KEY = '********************' API_SECRET = '******************************' # 仮想通貨保有残高取得のAPIを呼び出す URL = "https://exchange.rakuten-wallet.co.jp/api/v1/cfd/order" import time # 現在のUnixタイムスタンプを取得する now = time.time() # ミリ秒を追加する millisecond = round(now * 1000) # 文字列に変換する NONCE = str(millisecond) # 結果を出力する print(NONCE) import hashlib # ハッシュアルゴリズムHMAC SHA-256を初期化 hasher = hashlib.sha256(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムに、SECRETと、ハッシュ化するデータを渡す hasher.update(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムを実行する digest = hasher.digest() # バイト配列を16進数に変換する SIGNATURE = digest.hex() # 結果を出力する print(SIGNATURE) headers = {'API-KEY' : API_KEY, 'NONCE' : NONCE, 'SIGNATURE' : SIGNATURE} response = requests.get(URL, headers=headers) # レスポンスを表示する data = response.json() print(data)
guest

回答3

0

楽天APIは知らないのですが、ぱっと見て以下のところが気になります。

python

1# SECRETをバイナリに変換する 2SECRET = b"secret"

ここで「secret」という文字列をバイナリにする意味はなさそうです。少なくとも、API_SECRET あたりを入れるのがだとうでしょう。

このあたりどのように直したらいいかは、よくわかりませんが、ちょっと検索してみると以下の情報がみつかりました。参考になると思います。
https://note.com/dosu0217/n/n0ae0c74e63a3

投稿2023/10/27 08:56

TakaiY

総合スコア14298

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kannnna

2023/10/29 21:50

ご回答大変ありがとうございます!助かります;; おかげで、20001のerrorは解消されたのですが、 {'code': 20006} という新たなエラーが発生してしまいました。。 認証エラー?の様なのですが、詳しい説明が楽天APIになくて困っています。 重ねて申し訳ないのですが、分かりそうであれば、教えて頂きたいです。。 20001で通ったコードは以下のとおりです。 import requests # APIキーを設定 API_KEY = '********************' API_SECRET = '******************************' # 仮想通貨保有残高取得のAPIを呼び出す URL = "https://exchange.rakuten-wallet.co.jp/api/v1/cfd/order" import time # 現在のUnixタイムスタンプを取得する now = time.time() # ミリ秒を追加する millisecond = round(now * 1000) # 文字列に変換する NONCE = str(millisecond) # 結果を出力する print(NONCE) import hashlib # ハッシュアルゴリズムHMAC SHA-256を初期化 hasher = hashlib.sha256(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムに、SECRETと、ハッシュ化するデータを渡す hasher.update(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムを実行する digest = hasher.digest() # バイト配列を16進数に変換する SIGNATURE = digest.hex() # 結果を出力する print(SIGNATURE) headers = {'API-KEY' : API_KEY, 'NONCE' : NONCE, 'SIGNATURE' : SIGNATURE} response = requests.get(URL, headers=headers) # レスポンスを表示する data = response.json() print(data)
TakaiY

2023/10/30 01:38

コードをここに貼っても読めませんので、質問に追記でおねがいします。 質問は編集できます。
guest

0

自己解決

ありがとうございました

投稿2024/05/26 15:53

kannnna

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

楽天ウォレットAPIを使ったことないので適当な回答ですが、

https://www.rakuten-wallet.co.jp/service/api-leverage-exchange/
の「REST形式」に 20001:AUTHENTICATION_ERROR_API_KEY_NOT_FOUND と書いてあります。

ヘッダは API_KEY じゃなくて API-KEY じゃないんですかね。

投稿2023/10/27 03:50

68user

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kannnna

2023/10/29 21:51

ご回答大変ありがとうございます!助かります;; おかげで、20001のerrorは解消されたのですが、 {'code': 20006} という新たなエラーが発生してしまいました。。 認証エラー?の様なのですが、詳しい説明が楽天APIになくて困っています。 重ねて申し訳ないのですが、分かりそうであれば、教えて頂きたいです。。 20001で通ったコードは以下のとおりです。 import requests # APIキーを設定 API_KEY = '********************' API_SECRET = '******************************' # 仮想通貨保有残高取得のAPIを呼び出す URL = "https://exchange.rakuten-wallet.co.jp/api/v1/cfd/order" import time # 現在のUnixタイムスタンプを取得する now = time.time() # ミリ秒を追加する millisecond = round(now * 1000) # 文字列に変換する NONCE = str(millisecond) # 結果を出力する print(NONCE) import hashlib # ハッシュアルゴリズムHMAC SHA-256を初期化 hasher = hashlib.sha256(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムに、SECRETと、ハッシュ化するデータを渡す hasher.update(b"1586345939000/v1/spot/order/65?id=1") # ハッシュアルゴリズムを実行する digest = hasher.digest() # バイト配列を16進数に変換する SIGNATURE = digest.hex() # 結果を出力する print(SIGNATURE) headers = {'API-KEY' : API_KEY, 'NONCE' : NONCE, 'SIGNATURE' : SIGNATURE} response = requests.get(URL, headers=headers) # レスポンスを表示する data = response.json() print(data)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問