Class 尝试加载 YouTube 时未找到 PHP API

Class not found while trying to load YouTube PHP API

我一直在尝试加载 YouTube API(通过 Google 客户端 v2.5),但我一直 运行 出错:

"error_message": "Class 'Google_Service_YouTube_Resource_Activities' not found",
"location": "[path snip]\/external\/google\/apiclient-services\/src\/Google\/Service\/YouTube.php:100"

作为测试,我尝试了 运行 the GitHub page 上的基本示例,并且书籍 API 已正确加载。 (请求失败,因为 Books 范围未注册到我的 API 键,但它确实加载正确并尝试调用。)所以,自动加载似乎工作正常,除了 YouTube API每次都卡在这里。

试图加载 API 的代码位于命名空间内的 class 的构造函数中:

    $this->gclient = new \Google_Client();
    $this->gclient->setApplicationName($settings['appname']);
    $this->gclient->setDeveloperKey($settings['apikey']);
    $this->gclient->addScope(\Google_Service_YouTube::YOUTUBE_READONLY);

    $this->yclient = new \Google_Service_YouTube($this->gclient);

这些库是通过 PHP Composer 安装的,vendor 路径已使用其选项修改为 external。服务器是 运行 PHP 7.3.19.

我不确定 gclient 和 yClient 是什么。

对于初学者,您似乎忘记添加您的客户端密钥 json 文件。我不确定您要使用哪种方法,但大多数 youtube api 都需要身份验证。你只有一个 api 键,它只能在 public 方法上工作。

$client = new Google_Client();
$client->setAccessType("offline");        // offline access.  Will result in a refresh token
$client->setIncludeGrantedScopes(true);  
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->addScope([YOUR SCOPES HERE]);
$client->setRedirectUri(getRedirectUri());  

$service = new Google_Service_Youtube($client); 

事实证明,问题出在文件权限上。在 运行 chmod 修复问题后,它现在可以工作了。