var client = stream.connect('my-client-id', null, '7723');
var user1 = client.feed('flat', 'my-client-id', 'NuAW6yHVQ2sr9RQvBE-cCuewUlo'); // What is this token param (3rd one)? How is this generated?
var acticity = {
actor: 'QUXdERFPto',
tweet: 'Hello world',
verb: 'tweet',
object: 1
}
user1.addActivity(acticity).then(null).catch(function(e) {
// Error object is
// code: null
// detail: "url signature missing or invalid"
// duration: "10ms"
// exception: "AuthenticationFailed"
// status_code: 403
});
我遗失的签名是什么?
答案 0 :(得分:1)
在客户端上使用stream-js库时,您应该在没有密钥的情况下启动连接,以避免与世界共享您的私钥(其秘密)。
var client = stream.connect('api-key', null, 'app-id');
以这种方式启动客户端不允许您从此客户端创建的任何Feed中读取或写入,因此当您尝试从中读取或写入时,以下订阅源将返回403错误。
client.feed('flat', 'user-id');
但是如果你在服务器端生成read/write token,你可以用这个令牌发起一个feed并允许来自客户端的读/写:
client.feed('flat', 'user-id', 'read/write token');
要在服务器上生成读/写令牌,请使用您的密钥启动客户端,并调用以下方法:
var client = stream.connect('api-key', 'api-secret', 'app-id');
var readToken = client.getReadOnlyToken('flat', 'user-id');
var readWriteToken = client.getReadWriteToken('flat', 'user-id');
将其中一个令牌提供给您的客户端,并使用此令牌创建一个Feed实例。
在大多数用例中,您可能希望在服务器端使用stream-js
客户端并在那里检索/发布活动,使用存储在本地数据库中的数据丰富这些活动并将其发送给客户端。在客户端上使用stream-js的一个用例是realtime notifications