我对node.js的一次性包有问题。我想访问公共bitskins API。我有2台服务器。一个免费的网站空间(cloud9-ide)和一个虚拟服务器。这是我的代码:
var TOTP = require('onceler').TOTP;
var totp = new TOTP('SECRET_CODE');
console.log(totp.at());
我在我的免费cloud9网站空间运行这个,我得到了正确的令牌,我可以使用它来访问bitkins的公共API。
现在我在我的服务器上运行完全相同的代码,并且我始终只使用 错误的令牌。两个服务器都使用相同的外包(0.0.5),但它们给了我不同的令牌。可能是什么原因?
我尝试更新软件包,或者导入cloud9-server的软件包。但没有任何改变。
答案 0 :(得分:0)
使用totp.now()而不是totp.at()。 totp.at采用您想要生成otp的时间参数。
另一种解决方法是使用speakeasy:
var speakeasy = require("speakeasy");
var token = speakeasy.totp({
secret: config.get("bitSkins").otpCode,
encoding: 'base32'
});
console.log(token);
答案 1 :(得分:0)
您需要同步设备的时钟。
$ sudo apt-get install ntp -y