url 签名丢失或 getstream 无效

url signature missing or invalid getstream

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

我缺少什么签名?

Stream-JS client-side 供稿令牌

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

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

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

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

但是,如果您在服务器端生成 read/write token,您可以使用此令牌启动提要并允许来自 client-side:

的 read/writes
client.feed('flat', 'user-id', 'read/write token');

要在服务器上生成 read/write 令牌,请使用您的密钥启动客户端并调用以下方法:

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

但在大多数 use-cases 中,您可能希望在服务器端使用 stream-js 客户端并在那里使用 retrieve/publish 活动,使用存储在本地数据库中的数据丰富这些活动并发送这给客户。一个 use-case 用于在客户端上使用 stream-js 用于 realtime notifications