【问题标题】:Having trouble with methods for Vimeo's new APIVimeo 新 API 的方法有问题
【发布时间】:2014-05-14 19:29:36
【问题描述】:

我想使用 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 还是我的语法有其他问题?

【问题讨论】:

  • 哦,我看到这些方法适用于高级 API,而新 API 使用端点...进一步探索。

标签: php curl vimeo-api


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

      • 新 API 文档在哪里链接回旧文档?我想解决这个问题。
      • 您在过去几天是否更改了文档?现在看起来很棒。我以前经历过各种各样的兔子洞,而且通常很困惑。但也许因为我现在对它的理解更好,我可以找到我以前需要找到的所有信息而无法找到。
      • 我也在苦苦挣扎,在我的情况下,这是一个身份验证问题,我使用了修复 here
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多