【问题标题】:Cannot set redirect_url for upload through API无法设置通过 API 上传的 redirect_url
【发布时间】:2015-04-21 19:03:28
【问题描述】:

我正在使用 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...

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

你们知道我做错了什么吗?

干杯

解决方案

正如Austio 解释的那样,POST 的参数是在正文中发送的,而不是在 url 中。 此外,Vimeo API 需要将 type 设置为 POST。下面的 sn-ps 现在可以工作了:

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

【问题讨论】:

    标签: ruby-on-rails vimeo vimeo-api


    【解决方案1】:

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

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

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

    【讨论】:

    • POST api.vimeo.com/me/videos 是官方 API 端点(记录在 developer.vimeo.com/api/endpoints/me#POST/me/videos)。我纠正了上面的错误。问题依然存在。
    • 非常感谢您的回答。它为我指明了正确的方向。不过请注意,据我了解,您必须访问正文而不是参数。
    • 关于您的站点注释的另一个问题:我确实使用 Postman,但是否有类似的支持 OAuth2 的 REST 客户端?这是这里的限制因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2021-09-18
    • 2021-02-18
    • 1970-01-01
    • 2022-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多