Onceler给出错误的令牌(bitskins api)

我有一个node.js的“一次性包”的问题。 我想访问公共bitkins API。 我有2台服务器。 免费的networking空间(cloud9-ide)和一个虚拟服务器。 这是我的代码:

var TOTP = require('onceler').TOTP; var totp = new TOTP('SECRET_CODE'); console.log(totp.at()); 

我运行在我的免费cloud9网站空间,我得到我的正确的标记,我可以用它来访问bitskins的公共API。

现在,我在我的服务器上运行完全相同的代码,并且始终获取错误的令牌。 这两个服务器使用相同的一次性包(0.0.5),但他们给我不同的令牌。 可能是什么原因?

我试着更新软件包,或者导入我的cloud9-server的软件包。 但没有任何变化。

使用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); 

您将需要同步您的设备的时钟。

Ubuntu例子:

 $ sudo apt-get install ntp -y