API Feed不会在实时网站上提供数据

时间:2013-06-10 18:58:19

标签: php youtube youtube-api

所以我对YouTube API Feed有疑问。

在我们的实时网站上,它不会打印Feed的数据,但是当我访问我们的开发人员服务器时,所有内容都会正确打印。

以下是一个基本测试页面:http://www.fleetistics.com/videos/test.php

我一无所获。

以下是我应该看到的片段:

SimpleXMLElement Object
(
    [id] => tag:youtube.com,2008:video:wzE9T5iy00Y
    [published] => 2013-03-25T19:13:32.000Z
    [updated] => 2013-06-05T13:29:37.000Z
    [category] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [scheme] => http://schemas.google.com/g/2005#kind
                            [term] => http://gdata.youtube.com/schemas/2007#video
                        )

                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [scheme] => http://gdata.youtube.com/schemas/2007/categories.cat
                            [term] => Autos
                            [label] => Autos & Vehicles
                        )

                )

        )

    [title] => GPS Tracker Used by Action Lock and Safe
    [content] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [type] => application/x-shockwave-flash
                    [src] => https://www.youtube.com/v/wzE9T5iy00Y?version=3&f=videos&app=youtube_gdata
                )

        )

以下是我在test.php页面上使用的代码:

<?php
    $entryURL = 'https://gdata.youtube.com/feeds/api/videos/wzE9T5iy00Y?v=2';
    $feed = simplexml_load_file($entryURL);
?>

<pre><?php print_r($feed); ?></pre>

这个基本示例仅使用“视频”Feed,但我对所有Feed都遇到了同样的问题。

现在这些Feed在周五正常运行,所以当时和现在之间发生了一些事情。

我已经排除了它可能是一个编程错误,因为在我提供的示例中,我取出了所有内容并且只留下了最低限度。加上相同的代码在开发服务器上运行良好。

我不认为这是YouTube API,因为我没有看到任何重大公告,而且我看到的其他提要工作正常。

因此,让我相信这是我的网站或我的帐户的问题。我得到的印象是我的帐户,因为我的网站上使用其他应用程序的其他供稿正常工作。

我该如何解决这个问题,或者对此进行进一步的排查以便我能解决它?

1 个答案:

答案 0 :(得分:1)

这听起来(并且看起来)可疑,因为php标志allow_url_fopen已在您的生产服务器上关闭。如果您有权访问php.ini文件,则可以检查该标志(它需要打开以允许simplexml_load_file加载远程数据)。如果它是您没有该访问权限的托管环境,您可以通过编写如下例程来检查:

if( ini_get('allow_url_fopen') ) {
   echo "it's on!";
} 
else {
   echo "it's off!";
}

如果这是问题,并且您无权重新打开它,则可以改为使用curl:

function curl_get_contents ($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

$entryURL = 'https://gdata.youtube.com/feeds/api/videos/wzE9T5iy00Y?v=2';
$feed = simplexml_load_file(curl_get_contents($entryURL));

如果这不是问题,请检查日志以查看simplexml_load_file是否引发任何错误。