使用Vimeo新API的方法时遇到问题

时间:2014-05-14 19:29:36

标签: php curl vimeo-api

我想使用vimeo.videos.getInfo方法获取上传到我帐户的私有视频的信息。我只会在一个网站上使用此应用程序,因此我将访问令牌硬编码到代码中。

我正在使用Vimeo API的官方PHP库(https://github.com/vimeo/vimeo.php)。

所以这就是我到目前为止所拥有的......

$vimeo = new Vimeo($apiKey, $apiSecret, $accessToken);

一切都好。首先,当我尝试示例中的示例代码时:

$user_data = $vimeo->request('/me');
print_r($user_data);

返回一个空数组:

Array (
    [body] => 
    [status] => 0
    [headers] => Array
        (
        )

)

我注意到他们提到如果数组返回空,它可能与无效的SSL证书有关。现在,我只是在localhost上开发,所以我将CURLOPT_SSL_VERIFYPEER设置为false(感谢这些说明:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/)。我将它添加到vimeo.php中第112行的数组中:

$curl_opt_defaults = array(
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => false);

一旦我这样做,我就能够返回有关经过身份验证的用户的信息。

但是这仍然是一个空数组:

$params = array(
    'video_id' => 95307197
);
$videos = $vimeo->request('vimeo.videos.getInfo', $params);
print_r($videos);

与我尝试放入的任何方法相同。我是否将CURLOPT_SSL_VERIFYPEER错误或我的语法错误了?

3 个答案:

答案 0 :(得分:4)

我认为我可能会分享我的解决方案,这花了我一些时间来弄清楚。我还想访问私人视频数据,即视频播放的时间。以下是我的步骤:

  1. 在Vimeo上创建应用并获取Client IdentifierClient Secret,并生成包含Access TokenPublic和{{1}属性的Private }}。您可能需要根据访问需要添加或删除属性。
  2. 从Vimeo下载PHP源代码。
  3. 奇怪的是,至少在我的情况下,代码在语句Interact中的第473行上的语法错误,以解决它最后删除$name = array_slice(explode("/", $file_path), -1)[0];!事实上,我并不需要调用此函数来知道它是否有任何伤害,但这解决了我的问题。顺便说一下,我在Dreamweaver上。
  4. 更奇怪的是,提供的PHP代码使我的Vimeo无法使用新系统进行身份验证,因此您需要在每个[0]语句之前添加此代码curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);。这应该是3个补充。
  5. 最后,创建自己的PHP脚本以访问私有视频。
  6. 这是我的代码:

    $response = curl_exec($curl);

    在我的情况下,我只针对游戏数量require("../Vimeo PHP path/autoload.php"); use Vimeo\Vimeo; $client_id = "*****"; //your Vimeo number here $client_secret = "*****"; //your Vimeo number here $access_token = "*****"; //your Vimeo number here $vim = new Vimeo($client_id, $client_secret, $access_token); $response = $vim->request("/videos/****"); //your Vimeo PRIVATE video ID here echo $response["body"]["stats"]["plays"]; ,但你可以打印整个身体。希望这对某人也有帮助。

答案 1 :(得分:2)

感谢这个例子,我解决了同样的问题,在_request方法(第125行)的当前api中添加curl选项CURLOPT_SSL_VERIFYPEER并将其设置为false,这样你就有了这样一个数组:

  

$ curl_opt_defaults = array(CURLOPT_HEADER => 1,                            CURLOPT_RETURNTRANSFER =>真正,                            CURLOPT_TIMEOUT => 30,                            CURLOPT_SSL_VERIFYPEER =>假);

并且全部:)希望这有助于其他人。

答案 2 :(得分:1)

希望这有助于其他人。 Vimeo API文档完全没有问题,新的API文档会链接回较旧的API文档,这只会增加混乱。

新API没有使用Advanced API中的方法,它使用此处的端点https://developer.vimeo.com/api/endpoints

以下是最终适合我的代码:

$videos = $vimeo->request("/videos/$video_id");
print_r($videos);