使用vimeo ruby​​ gem通过访问脚本访问Vimeo API

时间:2014-09-26 00:50:22

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

我想获取限制视频列表的缩略图网址。

我使用vimeo创建了一个应用程序,并获得了一个访问令牌。

如何使用此访问令牌获取对该方法的访问权限?当我尝试这个时:

videos = Vimeo::Advanced::Video.new("client_identifier", "client_secret", 
    :token => "access_token")
videos.get_thumbnail_urls(the_video_id)

我得到了

Vimeo::Advanced::RequestFailed: 401: Permission Denied, explanation: The oauth_token passed was either not valid or has expired.

我的用户没有vimeo帐户,因此我没有看到他们使用vimeo进行身份验证的重点(或方法)。我想获取由创建应用程序的同一帐户上传的视频缩略图。我的理解是我生成的访问令牌应该提供这种访问。

我错过了什么?

更新:基于已接受的答案,以下是对我有用的内容

require 'httparty'

video_id = "123456789"   # substitute with the desired video ID
api_url = "https://api.vimeo.com/videos/#{video_id}/"  
auth = "Bearer access_token_generated_by_vimeo"    # use your access token
r = HTTParty.get api_url, headers: { "Authorization" => auth, "Accept" => "application/vnd.vimeo.*+json;version=3.2" }  # make sure to use the proper Accept header as recommended in the API docs
v = JSON.parse(r)
v["pictures"]["sizes"][1]["link"]

2 个答案:

答案 0 :(得分:3)

Advanced API是Vimeo的旧API。这已被弃用,许多库仍然只能使用这个旧的API。

幸运的是,新的API非常简单,你真的不需要一个库。特别是如果你想要的只是缩略图访问。

<强>验证

dev site上查看单用户与多用户应用程序的文档。由于您的用户没有vimeo帐户,因此您应该遵循单个用户帐户的说明(基本上是对单个访问令牌进行硬编码。您可以在“身份验证”标签下的应用页面上生成此令牌“。

API请求

API使用更清晰的身份验证和请求结构。缩略图与所有视频回复一起提供。其中包括https://api.vimeo.com/videos/{video_id}https://api.vimeo.com/me/videoshttps://api.vimeo.com/channels/{channel_id}/videos等。

Vimeo建议您在标题中包含您的访问令牌(授权:bearer {token}),但系统允许您通过URL(?access_token = {token})提供它。

最终请求可能看起来像

GET https://api.vimeo.com/me/videos
Authorization: bearer abcd1234

<强>红宝石

不幸的是我不熟悉ruby,所以我无法帮助将其转换为ruby,但是可能有一个很棒的HTTP库可以帮助你。

答案 1 :(得分:0)

这对于我在经过多次实验后从查询字符串中获取视频ID非常有用(感谢上述所有海报)。

escaped_title = CGI::escape(title)
api_url = "https://api.vimeo.com/videos?query=#{escaped_title}&sort=relevant&access_token=#{@access_token}"
vimeo_response = JSON.parse(HTTParty.get api_url)
vimeo_id = vimeo_response["data"][0]["uri"]