url签名丢失或getstream无效

时间:2016-01-19 13:51:43

标签: javascript getstream-io

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

我遗失的签名是什么?

1 个答案:

答案 0 :(得分:1)

Stream-JS客户端订阅源标记

在客户端上使用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客户端并在那里检索/发布活动,使用存储在本地数据库中的数据丰富这些活动并将其发送给客户端。在客户端上使用stream-js的一个用例是realtime notifications