我正在使用API和Rails应用程序中的intridea/oauth2将视频上传到我的Vimeo帐户。
这是我检索上传机票的方式:
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...
整个过程运行正常,视频已上传,但正如您所见,重定向网址未替换为https://foobar.com
。
这意味着我无法自动将video_id
恢复到我的应用。
你们看到我做错了吗?
干杯
解
正如Austio所述,POST的参数是在正文中发送的,而不是在网址中发送的。
此外,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
答案 0 :(得分:2)
那么问题就是你没有做正确的帖子格式。对于帖子,您通常会将请求中的参数放在网址中。尝试这样的事情。
token.post('/me/videos') do |request|
request.params['request_url'] = "https://foobar.com"
end
旁注,如果我遇到API问题,我会推出类似postman(chrome扩展名)的东西来测试api在排除ruby / rails方面之前是否正常工作。除非您深刻理解用于发布的客户端,否则最终会从过高的抽象开始。