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 を使用するユースケースの 1 つは、リアルタイム通知です。

于 2016-01-19T15:08:58.070 に答える