首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Angular.js中使用CryptoJS调用Tether.to接口

如何在Angular.js中使用CryptoJS调用Tether.to接口
EN

Stack Overflow用户
提问于 2016-02-02 01:53:03
回答 1查看 355关注 0票数 0

我正在用Angularjs开发一个应用程序,它调用Tether.to站点(http://platform.tether.to/)的一些API。

API需要发送如下格式的header:

代码语言:javascript
复制
Authorization: APIAuth TetherAPIKey:Signature

Authorization header的计算方法如下:

代码语言:javascript
复制
Authorization = “APIAuth” + “ ” + TetherAPIKey + “:” + Signature;
Signature = Base64( HMAC-SHA1( TetherAPISecret, StringToSign ) );
StringToSign = Content-Type + “,” + Content-MD5 + “,” + URI + “,” + Timestamp; 

我在AngularJS中使用以下代码实现:

代码语言:javascript
复制
var url, timestamp, stringToSign, signature, request, r,
    apiKey = 'xxxxxxx', apiSecret = 'xxxxxxxPo95gm9eoCeFyTTw3zeCFf';
url = 'https://wallet.tether.to/api/v1/transactions';
timestamp = new Date().toUTCString();
stringToSign = 'application/json,' + CryptoJS.MD5('') + ',' + url + ',' + timestamp;
signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(stringToSign, apiSecret));
request = {
    headers: { 'Authorization': 'APIAuth ' + apiKey + ':' + signature }
};
r = $http.get(url, request).success(function(data) {
    console.log(data);
});

我的代码哪里错了?为什么接口("/transactions")总是返回{"code":401,"error":"Unauthorized"}

EN

回答 1

Stack Overflow用户

发布于 2016-02-02 04:25:20

当您强制将WordArray转换为字符串时,Content-MD5默认编码为十六进制,但Content-MD5必须是base64编码的(从项目的ruby代码判断)。

尝试:

代码语言:javascript
复制
stringToSign = 'application/json,' + CryptoJS.MD5('').toString(CryptoJS.enc.Base64) + ',' + url + ',' + timestamp;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35137122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档