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

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

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

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

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

Q&A

0回答

2918閲覧

Bitflyer APIで証拠金の状態取得時のエラー(status: -500 'Invalid signature')

Daenarys

総合スコア4

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

API

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

0グッド

0クリップ

投稿2019/09/12 04:57

編集2022/01/12 10:55

前提・実現したいこと

・Javascriptを使って、仮想通貨取引所のAPIを使用し自動売買プログラムのサンプルプログラムを試しています。
・Bitflyer APIの“GET /v1/me/getcollateral”の実行して証拠金の状態を取得したいです。

ここに質問の内容を詳しく書いてください:
・Bitflyer APIの“GET /v1/me/getcollateral”の実行時にBitflyerAPI独自のエラーが出ました。
・サンプルコードのエラーなのでコード自体のエラーではないと思います。
・他のBitflyer APIの実行時は正しく行われます。
・Bitflyer APIのドキュメントを見ましたがエラーメッセージについて書かれておりませんでした。

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

{ status: -500, error_message: 'Invalid signature', data: null }

該当のソースコード

ソースコード(test.js):
var request = require('request');
var crypto = require('crypto');
const ApiKey = 'xxxxxxx';
const ApiSecret = 'xxxxxxx';
const API_VERSION = '/v1/';
const PRODUCT_CODE = 'FX_BTC_JPY';
const GET = 'GET';
const POST = 'POST';

//CALL-S
function call(method, path, body, callback){

var timestamp = Date.now().toString(); var text = timestamp + method + API_VERSION + path + body; var sign = crypto.createHmac('sha256', ApiSecret).update(text).digest('hex'); var url = 'https://api.bitflyer.jp' + API_VERSION + '/' + path;

//変更前-s
var options = {
url: url,
method: method,
body: body,
headers: {
'ACCESS-KEY': ApiKey,
'ACCESS-TIMESTAMP': timestamp,
'ACCESS-SIGN': sign,
'Content-Type': 'application/json'
}
};
//変更前-e

request(options, callback);

}
//CALL-E

//評価損益を取得▼
function getCollateral(callback) {
var body = JSON.stringify({
product_code: PRODUCT_CODE,
});
call(GET, 'me/getcollateral?product_code=' + PRODUCT_CODE, body, function(err, response, payload) {

var response = JSON.parse(payload);
if (callback) {
callback(response.type)
console.log(response)
}
})
}
//評価損益を取得▲

//プロシージャーはここから開始

//評価損益を取得▽
getCollateral(function(response){

})

試したこと

・Bitflyer APIのドキュメントにもエラーについて書いてありませんでした。
・エラーをググってみましたが答えは見つかりませんでした。
・サンプルコードを提供してくれたサイトのコメント欄にも質問しました。
・エラーメッセージのInvalid signature(無効なシグネチャー)の意味に付いて考えましたが、ちょっとまだわかりません。

補足情報(FW/ツールのバージョンなど)

・windows10(64bit)
・javascript:nodeパッケージのバージョンはv10.16.0です。

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

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

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

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

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

yoorwm

2019/09/12 05:06

APIキーとか記述してしまっていますが、ご自身で取得したものですか? (悪意のある他の人などに使用される危険性もあるので、この質問自体を削除してキーも無効にしておいた方がいいかもしれません。)
Y.H.

2019/09/12 05:07

> ・サンプルコードを提供してくれたサイトのコメント欄にも質問しました。 https://teratail.com/help#posted-otherservice teratailでは、マルチポスト※の推奨はしていません。 やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
Daenarys

2019/09/13 01:35

Yoorwm様ご指摘ありがとうございます。APIは無効にしました。
Daenarys

2019/09/13 01:38

Y.H.様ご指摘ありがとうございます。他のサイトの質問は削除いたしました。
CHERRY

2019/09/14 06:29

Invalid signature. と言われていますが、署名は正しくされているということでしょうか?
Daenarys

2019/09/15 03:06

CHERRY様、返信ありがとうございます。 そうですね、もう一度ちゃんと見てみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問