【问题标题】:Accessing Vimeo API via access script using the vimeo ruby gem使用 vimeo ruby​​ gem 通过访问脚本访问 Vimeo API
【发布时间】:2014-09-26 00:50:22
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    高级 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 建议您在标头中包含访问令牌(授权:不记名 {token}),但系统确实允许您通过 URL (?access_token={token}) 提供它。

    最终请求可能如下所示

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

    红宝石

    不幸的是,我不熟悉 ruby​​,所以我无法将其翻译成 ruby​​,但可能有一个很棒的 HTTP 库可以帮助您。

    【讨论】:

    • 非常感谢,这正是我所需要的。 ruby gem 使用旧的 API,我对 gem 文档和 vimeo 文档感到困惑。
    • [jsonResultDic setObject:@"456a8852ebd72760de4d2206bab3dad0db35a66b" forKey:@"client_id"];//@"consumer_key" [jsonResultDic setObject:@"eb74abb5d1f38ad0bd570d24e4d1d0ee3a_secret:@"@client"/"/" consumer_secret" [jsonResultDic setObject:@"vimeo.channels.getAll" forKey:@"method"];[jsonResultDic setObject:@"bearer a75a63c0e0121b0704a4c98d6e209eb2" forKey:@"Authorization"];
    • NSString urlPost = @"vimeo.com/api/rest/v2";ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlPost]];NSString str=[jsonResultDic JSONRepresentation];NSData jsonData =[str dataUsingEncoding:NSUTF8StringEncoding];[request1 setRequestMethod:@"GET"];[request1 setURL:[NSURL URLWithString:urlPost]];[request1 setPostBody:(NSMutableData)jsonData];[request1 addRequestHeader:@ “授权”值:@“承载 a75a63c0e0121b0704a4c98d6e209eb2”];[request1 addRequestHeader:@“client_id”值:@“456a8852ebd72760de4d2206bab3dad0db35a66b”];
    • [request1 addRequestHeader:@"client_secret" value:@"eb74abb5d1f38ad0bd570d24e4d1d0ee3a447534"];[request1 setCompletionBlock:^{}];[request1 setFailedBlock:^{}];[request1 startSynchronous];
    • 嗨,这是我在 ios 中的代码。我正在发送令牌,但它“传递的消费者密钥无效”
    【解决方案2】:

    这对我来说是经过大量实验后从查询字符串中获取视频 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"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多