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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

4086閲覧

bitFlyerのプライベート認証が出来ません

blossan

総合スコア154

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2017/06/13 12:50

お世話になります。
bitFlyerというビットコイン取引所に挑戦したいと思います。
プライベートapiを利用すると、プログラムで注文が出来るようです。
注文関係のapiは、セキュリティのため認証が必要なのですが、その部分がうまくできません。
サンプルは、node.jsというjavascriptで記載され、実際に動かす環境が同じjavascript系列のgoogle apps script になります。

今回は、一番簡単なapi一覧に挑戦しましたが、うまく認証が出来ないエラーが発生しています。

こちらがapiの説明が記載されたurlになります。
https://lightning.bitflyer.jp/docs?lang=ja

実際にgoogle apps script で記載したプログラムがこちらです。

google

1function bitFlyer() { 2 3 var key = "〇〇"; 4 var secretKey = "××"; 5 6 var timestamp = Date.now().toString(); 7 var method = 'GET'; 8 var path = '/v1/me/getpermissions'; 9 var text = timestamp + method + path; 10 var sign = Utilities.base64Encode(Utilities.computeHmacSha256Signature(text, secretKey)); //HMAC-SHA256 -> base64 11 var url = 'https://api.bitflyer.jp'+path; 12 13 var options = { 14 method:method, 15 headers:{ 16 'ACCESS-KEY':key, 17 'ACCESS-TIMESTAMP':timestamp, 18 'ACCESS-SIGN':sign, 19 'Content-Type':'application/json' 20 } 21 }; 22 23 var response = UrlFetchApp.fetch(url,options); 24 Logger.log(response); 25 26}

実際のエラーメッセージがこちらになります。

google

1https://api.bitflyer.jp/v1/me/getpermissions のリクエストに失敗しました(エラー: 401)。サーバー応答の一部: {"status":-500,"error_message":"Non-hexadecimal signature","data":null}(応答の全文を見るには muteHttpExceptions オプションを使用してください)(行 26、ファイル「bitFlyer」)

どこが原因だけでも教えていただけると助かります。

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

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

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

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

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

CHERRY

2017/06/13 23:56

アカウント取得ができなかったので、テストしていませんが、https://lightning.bitflyer.jp/docs/playground で、API のテストができるようです。 プログラムでお使いの API Key と API Secret を入力して、左側で API の種類「GET /v1/me/getpermissions」を選択して、「submit」をクリックして動作を試してみてください。 API テスト画面で、うまく行くようであれば、プログラムの sign の値が異なっているのではないかと思われます。APIテスト画面にあるサンプルプログラムで生成した sign の値と GAS で生成した sign の値を比べてみてください。
guest

回答1

0

ベストアンサー

こんにちは。

var sign = Utilities.base64Encode(Utilities.computeHmacSha256Signature(text, secretKey));

のところを

var signature = Utilities.computeHmacSha256Signature(text, secret); var sign = signature.reduce(function(str,chr){ chr = (chr < 0 ? chr + 256 : chr).toString(16); return str + (chr.length==1?'0':'') + chr; },'');

とすると認証できると思います。

こちらもご参考ください
【GASでbitFlyer API】資産残高を取得する - http://life89.jp/gas_bitflyer_api_getbalance/

投稿2017/08/03 01:25

hirosopher

総合スコア13

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

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

blossan

2017/08/03 11:29

認証部分に関しての回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問