无法设置 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,否则你最终会从太高的抽象开始。
我正在使用 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
返回到我的应用程序。
你们看出我哪里做错了吗?
干杯
解决方案
如 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,否则你最终会从太高的抽象开始。