2015-04-21 2 views
0

Я загружаю видео в свою учетную запись Vimeo с использованием API и intridea/oauth2 в приложении Rails.Невозможно установить redirect_url для загрузки через API

Это, как я получить мой билет загрузки:

require 'oauth2' 
require 'json' 
client = OAuth2::Client.new CLIENT_ID, SECRET, site: 'https://api.vimeo.com' 
token = OAuth2::AccessToken.new client, TOKEN 
response = token.post '/me/videos?redirect_url=https://foobar.com' 

body = JSON.parse response.body 
puts body['upload_link_secure'] 

Конечной API я использую documented here. Предоставленная ссылка в ответ выглядит примерно так:

https://1511635511.cloud.vimeo.com/upload?ticket_id=...&redirect_url=https%3A%2F%2Fvimeo.com%2Fupload%2Fapi%3F... 

Весь процесс работает отлично, видео загружается, но как вы можете увидеть Перенаправление URL не был заменен https://foobar.com. Это означает, что я не получу video_id обратно в свое приложение автоматически.

Вы, ребята, видите, что я делаю неправильно?

Приветствия

РЕШЕНИЕ

Как пояснил Austio параметры для POST отправляются в теле, а не в URL. Также для Vimeo API требуется, чтобы type был установлен в POST. В follogwing сниппеты работает сейчас:

response = token.post '/me/videos', body: { type: 'POST', redirect_url: 'https://foobar.com' } 

Или:

response = token.post '/me/videos' do |request| 
    request.body = { type: 'POST', redirect_url: 'https://foobar.com' } 
end 

ответ

2

So проблема то в том, что вы не делаете правильный формат пост. Для сообщений вы обычно ставите параметры в запросе не в URL-адресе. Попробуйте что-то вроде этого.

token.post('/me/videos') do |request| 
    request.params['request_url'] = "https://foobar.com" 
end 

Примечание стороны, если я когда-либо возникли проблемы с API я вытаскивать что-то вроде почтальона (расширение хром), чтобы проверить, что апи работает, как ожидается, до устранения неполадок на стороне рубин/рельсы. Вы в конечном итоге начинаете с слишком высокой абстракции, если не понимаете, какой клиент вы используете для публикации.

+0

POST https://api.vimeo.com/me/videos является официальной конечной точкой API (документируется по адресу https://developer.vimeo.com/api/endpoints/me#POST/me/videos). Я исправил ошибку выше. Проблема все еще возникает. – elactic

+0

Большое спасибо за ответ. Он указал мне правильно. хотя я понимаю, что вам нужно получить доступ к телу, а не к параметрам. – elactic

+0

Еще один вопрос о заметке вашего сайта: я использую Postman, есть ли подобный клиент REST, поддерживающий OAuth2? Это был ограничивающий фактор. – elactic