1
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
});

我缺少的签名是什么?

4

1 回答 1

1

Stream-JS 客户端提要令牌

在客户端上使用 stream-js 库时,您应该在没有您的密钥的情况下启动连接,以避免与世界共享您的私钥(它的秘密)。

var client = stream.connect('api-key', null, 'app-id');

以这种方式启动客户端不允许您从此客户端创建的任何提要中读取或写入,因此当您尝试从中读取或写入时,以下提要将返回 403 错误。

client.feed('flat', 'user-id');

但是,如果您在服务器端生成读/写令牌,则可以使用此令牌启动提要并允许从客户端进行读/写:

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');

将这些令牌之一提供给您的客户并使用此令牌创建一个提要实例。

何时在客户端使用 Stream-JS

然而,在大多数用例中,您希望stream-js在服务器端使用客户端并在那里检索/发布活动,使用存储在本地数据库中的数据丰富这些活动并将其发送到客户端。在客户端使用 stream-js 的一种用例是实时通知

于 2016-01-19T15:08:58.070 回答