无法设置 redirect_url 以通过 API 上传

Cannot set redirect_url for upload through API

我正在使用 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。 响应中提供的 link 看起来像这样:

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

整个过程运行良好,视频已上传,但如您所见,重定向 URL 并未替换为 https://foobar.com。 这意味着我不会自动将 video_id 返回到我的应用程序。

你们看出我哪里做错了吗?

干杯

解决方案

所述,POST 的参数在正文中发送,而不是在 url 中发送。 此外,Vimeo API 需要将 type 设置为 POST。以下片段现在有效:

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

那么问题是您没有使用正确的 post 格式。对于 posts,您通常会将参数放在请求中而不是 url 中。尝试这样的事情。

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

旁注,如果我在使用 API 时遇到问题,我会拿出类似 postman(chrome 扩展名)的东西来测试 api 是在对 ruby/rails 端进行故障排除之前按预期工作。除非你深入了解你正在使用的客户端 post,否则你最终会从太高的抽象开始。