2

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

我正在使用 Vimeo API ( https://github.com/vimeo/vimeo.php ) 的官方 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 还是我的语法有其他问题?

4

3 回答 3

4

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

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

这是我的代码:

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"];

在我的情况下,我只echo为播放次数做了,但你可以打印整个身体。希望这对某人也有帮助。

于 2014-11-10T21:48:23.817 回答
2

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

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

仅此而已:) 希望这对其他人有所帮助。

于 2014-12-31T01:15:28.900 回答
1

希望这对其他人有帮助。Vimeo API 文档完全不合时宜,新的 API 文档链接回旧的 API 文档,这只会增加混乱。

新 API 不使用高级 API 中的方法,它使用此处的端点https://developer.vimeo.com/api/endpoints

这是最终对我有用的代码:

$videos = $vimeo->request("/videos/$video_id");
print_r($videos);
于 2014-05-14T19:57:59.163 回答