2016-10-11 5 views
2

Я продолжаю получать «У вас нет разрешения на выполнение этого действия». при попытке подключения. Что мне не хватает?Ошибка разрешения действия с помощью Stream API

url = 'https://api.getstream.io/api/v1.0/feed/user/12353253/?api_key=API_KEY' 

payload = { 
    'resource' => 'feed', 
    'action' => 'read', 
    'feed_id' => 'user:12353253' 
} 

token = JWT.encode(payload, secret, 'HS256') 

options[:headers] = { 
    'Authorization' => token, 
    'stream-auth-type' => 'jwt' 
} 

response = HTTParty.get(url, options) 
+1

Вы передаете фактический ключ API? –

+0

Да, API_KEY предназначен только для этого примера. – Stephen

ответ

2

Похоже, что вы получили все правильно, за исключением значения для feed_id в полезной нагрузке. Это должен быть «user12353253» вместо «user: 12353253» (точка с запятой).

P.S. Я один из основателей Stream, REST API не объясняет это хорошо. Мы обновим их как можно скорее.

+0

Вот и все. Я понял это после того, как пробрался через рубинового клиента. Стандарты именования в документах нуждаются в обновлении, просто FYI. https://getstream.io/docs_rest/#naming Спасибо за помощь и очень классный продукт. – Stephen

0

Есть ли необходимость в использовании HTTParty? Stream has a Ruby library, что делает это намного проще, и JWT работает за кулисами для вас.

client = Stream::Client.new('API_KEY', 'API_SECRET', :location => 'us-east') 
user_feed = client.feed('user', 12353253.to_s) 
results = user_feed.get(:limit => 10) 

По умолчанию это должно сделать JWT для вас.

Если вы действительно хотите сделать это самостоятельно, вы можете проследить, что делает клиентская библиотека, и воспроизвести это.

+0

Невозможно использовать библиотеки, к сожалению, и в документах REST API отсутствует важная информация, которая отличается от стандарта. – Stephen

+0

@Stephen, что является проблемой блокировки, которая мешает вам использовать клиент API? Возможно, это то, что можно зафиксировать в библиотеке. –