Ruby on rails 使用Vimeo ruby gem通过访问脚本访问Vimeo API

Ruby on rails 使用Vimeo ruby gem通过访问脚本访问Vimeo API,ruby-on-rails,ruby,oauth,vimeo,vimeo-api,Ruby On Rails,Ruby,Oauth,Vimeo,Vimeo Api,我想抓取限制视频列表的缩略图URL 我用vimeo创建了一个应用程序,并获得了一个访问令牌 如何使用此访问令牌来访问该方法?当我尝试这个: videos = Vimeo::Advanced::Video.new("client_identifier", "client_secret", :token => "access_token") videos.get_thumbnail_urls(the_video_id) 我明白了 Vimeo::Advanced::RequestFa

我想抓取限制视频列表的缩略图URL

我用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"]

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

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

认证

请查看上单用户与多用户应用程序的文档。由于您的用户没有vimeo帐户,您应该按照单用户帐户的说明操作(基本上是硬编码单访问令牌。您可以在应用程序页面的“身份验证”选项卡下生成此令牌)

API请求

新版本使用了更干净的身份验证和请求结构。在所有视频响应旁边都提供了缩略图。这包括,等等

Vimeo建议您将访问令牌包含在头中(Authorization:bearer{token}),但系统允许您通过URL(?access_token={token})提供它

最后的请求可能看起来像

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


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

这就是我在经过大量实验后从查询字符串中获取视频id的方法(感谢上面的海报)


非常感谢,这正是我所需要的。ruby gem使用了旧API,我把gem文档和vimeo文档搞混了。[jsonResultDic setObject:“456A8852EBD72760DE4D2206BAB3D0DB35A66B”forKey:“client_id”];/“consumer_key”[jsonResultDic setObject:“eb74abb5d1f38ad0bd570d24e4d1d0ee3a447534”forKey:“client_secret”]/@“消费者机密”[jsonResultDic setObject:@“vimeo.channels.getAll”forKey:@“方法”];[jsonResultDic setObject:@“承载者a75a63c0e0121b0704a4c98d6e209eb2”forKey:@“授权”];NSString urlPost=@“*request1=[AsiHTTPRequestWithURL:[NSURLUrlWithString:Post];NSString STRING=[jsonResultDic JSONRepresentation];NSData jsonData=[str dataUsingEncoding:NSUTF8StringEncoding];[request1 setRequestMethod:@“GET”];[request1 SetUrlWithString:urlPost];[request1 setPostBody:(NSMutableData)jsonData];[request1 addRequestHeader:@“Authorization”值:@“bearer a75a63c0e0121b0704a4c98d6e209eb2”;[request1 addRequestHeader:@“client_id”值:@“456A8852EBD72760DE4D2206BAB3DD0DB35A66B”];[request1 addRequestHeader:@“client_secret”值:@“eb74abb5d1f38ad0bd570d24e4d1d0ee3a447534”;[request1 setCompletionBlock:^{}];[request1 setFailedBlock:^{}];[request1 startSynchronous];您好,这是我在ios中的代码。我正在发送令牌,但它“传递的使用者密钥无效”
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"]