【问题标题】:VIMEO (Pro) get JSON response help (PHP/CURL)VIMEO (Pro) 获取 JSON 响应帮助 (PHP/CURL)
【发布时间】:2016-10-27 15:13:54
【问题描述】:

我有一个 Vimeo PRO 帐户。 我已上传受保护的视频。 视频也设置为只能嵌入到我的域中(在视频设置中设置)

我 - 不 - 掌握如何使用他们的例子(对不起,对我来说,这些例子不包括对我来说真正的工作样本,..或者至少如何实现它们以理解..所以我希望得到一些帮助)

不清楚所有 OAuth2、Oembed... 身份验证的东西.. 我相信这是我的问题所在。

我正在关注这个 gitHub 示例:

https://github.com/vimeo/vimeo-api-examples/blob/master/oembed/php-example.php

(看起来很老?)

我希望在传递 ID 时为视频返回 JSON 数据。

我曾经/现在认为我需要“验证”才能获得响应/返回数据?

这最好在 CURL 标头中完成吗?

有人可以指导我更多吗? (不应该这么难!)哈哈..

这是我的代码:

$video_endpoint = 'https://api.vimeo.com/videos/';
$video_url = '171811266';

//JSON url
//$json_url = $video_endpoint . '.json?url=' . rawurlencode($video_url);
//this fixes the cURL approach
$json_url = $video_endpoint . rawurlencode($video_url);

// Curl helper function
function curl_get($url) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    //curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization : bearer xxxxxx'));
    $return = curl_exec($curl);
    curl_close($curl);
    return $return;
}

$vimeoJSON = json_decode((curl_get($json_url)));
var_dump($vimeoJSON);

我得到了这样的回应:

object(stdClass)#1 (1) { ["error"]=> string(52) "You must provide a valid authenticated access token." } 

问题是:

1.) 这甚至是一种有效的方法吗? (假设我只需要在 CURL 标头中添加几行代码以在收到响应之前发送我的身份验证?)

2.) 如何更新我的 CURL sn-p 以使用 VIEMO 身份验证?

我尽量保持简洁/简单(对于 JSON 调用/返回部分)..

感谢任何指导。

谢谢

更新:

此代码不起作用:

$access_token = 'xxx';    
$video_endpoint = 'https://api.vimeo.com/videos/';
$video_url = '171811266';

$json_url = $video_endpoint . '.json?url=' . rawurlencode($video_url);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $json_url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "GET",
      CURLOPT_HTTPHEADER => array(
        "authorization: Bearer ".$access_token
      ),
    ));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

我要使用的视频位于这里:

https://vimeo.com/171811266/5822169b48

这是一个私人视频。 (不确定你能看到它)..

当我使用上面发布的代码的最新版本时.. 我得到这个响应:

{"error":"The requested video could not be found"}

这是因为它是私人视频吗?

(实际上我只是将视频设置为任何人都可以观看..我仍然得到相同的错误/响应)(未找到)

如果是这样.. 使用我的视频的解决方法是什么.. 设置为私有...但仍然在我的站点/域上使用它们?

================================================ ==============================

最终更新:

尝试使用自述文件示例中的代码: https://github.com/vimeo/vimeo.php

尝试使用(未成功)LIB @Dashron 也指出了我。我什至似乎无法从 GIT 页面获得基础知识:

代码:

//project vars 
$client_id = 'xxxx';
$client_secret = 'xxx';
$access_token = 'xxx';

$redirect_uri = 'http://domain.com/file.php'; //where do I redirect them back to?  the page where I have the embeded video at?
// scope is an array of permissions your token needs to access. You can read more at https://developer.vimeo.com/api/authentication#scopes
$scopes = Array('public', 'private');
$state = 'Ldhg0478y';

require("Vimeo/autoload.php");

$lib = new Vimeo\Vimeo($client_id, $client_secret);


// build a link to Vimeo so your users can authorize your app. //whatever that means and is for?
$url = $lib->buildAuthorizationEndpoint($redirect_uri, $scopes, $state);

// redirect_uri must be provided, and must match your configured uri
$token = $lib->accessToken(code, redirect_uri);

// usable access token
var_dump($token['body']['access_token']);

// accepted scopes
var_dump($token['body']['scope']);

// use the token
$lib->setToken($token['body']['access_token']);

我收到此错误消息:

Parse error: syntax error, unexpected Fatal error: Class 'Vimeo\Vimeo' not found in /usr/www/users/aaemorg/aaem.org/video/vimeo_lib.php

似乎它没有创建实例化我的 $lib 对象/类??

(我知道我在高级 PHP 类/代码方面并不出色......但这很难为我拥有的视频获得 JSON 响应以(再次)嵌入到我拥有的网站上)

任何方向将不胜感激?

================================================ ========================

更新:“什么对我有用”..

我很欣赏“官方”库的链接。但自述文件示例对我不起作用...

为了让其他可能对 Vimeo API 不熟悉的人也能轻松搞定。这里有一个快速而肮脏的简单代码示例,可帮助您启动和运行:

<?
//include offifial library
require("Vimeo/autoload.php");
$client_id = 'xxx';
$client_secret = 'xxx';
$access_token = 'xxx';
$video_id = 'xxx'; 
$lib = new Vimeo\Vimeo($client_id, $client_secret, $access_token);
$video_response = $lib->request('/videos/'.$video_id);

//dont really need this, but included in case there is some data you need to display
$token_response = $lib->clientCredentials();

//example of parsing out specific data from the array returned
//name/title
echo $video_response['body']['name'] . '<br><br>';


?>

【问题讨论】:

  • @Cfreak - 感谢您的协助! (我对此感到震惊!)

标签: php json curl vimeo


【解决方案1】:

下面的代码对我有用

请按此步骤操作

在视频设置下:常规->隐私,将Who can watch选择框更改为任何人

$url = 'https://api.vimeo.com/videos/388591356';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$headers = array(); 
$headers[] = "Content-Type: application/x-www-form-urlencoded";
$headers[] = "Accept: application/json";
$headers[] = "Authorization: Bearer 969329f9b5b3882d74d1b39297528242";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);

curl_close($ch);
$final_result = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $result), true );
echo "<pre>";
print_r($final_result);

【讨论】:

    【解决方案2】:

    您提供的链接非常非常旧。它实际上是不同 API 的一部分,不再相关。

    您应该使用的库位于此处:https://github.com/vimeo/vimeo.php,自述文件中有许多示例,以及示例目录!

    【讨论】:

    • 感谢您的回复.. 因为我无法让 CURL 方法工作(不幸的是.. 因为我只想要一个简单的 JSON 返回以使用我认为合适的).. 我会尝试使用您链接到的图书馆。它看起来像很多额外的东西......只是为了得到一个简单的 JSON 返回?你能向我解释为什么如果这些是我的视频......并且我想在我的域上显示它们(也用于隐私/嵌入的视频设置)......为什么我需要这个身份验证的东西?我没有完全理解为什么我需要将用户发送到 vimeo 页面/站点才能让用户批准/接受任何内容?
    • 我只想在我自己的网站上嵌入私人视频?我想获得 JSON 返回(使用 .PHP),所以我显示视频本身(iFrame 或其他)...显示描述..以及我网站上的所有下载视频(同样视频和网站归我所有)
    • 我使用您提供的链接更新了原始帖子,但尝试失败。 $url 行出现错误。有关如何获取视频 ID 的简单 JSON 响应的任何建议/指导? (也许澄清为什么我需要为“我”拥有的视频做所有这些身份验证工作......并且只嵌入在“我”拥有的网站上?谢谢!
    • 在原始帖子中发布的工作示例...包括更新的 CURL 版本/方法非常希望不要使用官方库。
    • 您必须为其他用户生成访问令牌。您可以在 developer.vimeo.com/apps 的应用页面上手动生成自己的访问令牌
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多