ad / youtube
laravel 的 Youtube API3 包
Requires
- php: ^5.6|^7.1|^8.0
- google/apiclient: ^2.2
- illuminate/support: ^5.4|^6.0|^7.0|^8.0
- nesbot/carbon: ^2.17
Requires (Dev)
- orchestra/testbench: ~3.2
- phpunit/phpcov: ~3.0
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-19 12:33:12 UTC
README
请注意,此包仅适用于单个 YouTube 账户,并且不支持多个账户。
安装
要安装,请使用以下命令通过 Composer 拉取包。
composer require ad/youtube:dev-master
现在在 config/app.php
中注册服务提供者
'providers' => [ ... ad\Youtube\YoutubeAPIServiceProvider::class, ],
并将别名添加到同一文件中。
'aliases' => [ ... 'YoutubeAPI'=>ad\Youtube\Facades\YoutubeAPI::class, ],
配置
现在您需要发布 youtubeAPI.php
配置和迁移。
php artisan vendor:publish --provider="ad\Youtube\YoutubeAPIServiceProvider"
现在运行 php artisan migrate
来创建 youtube_access_tokens
表,该表将包含您的访问令牌,一旦您正确认证。
获取您的凭证
如果您尚未创建,您需要在 Google 开发者控制台 上创建一个应用程序。然后,您需要进入控制台中的 凭证 来创建服务器密钥。
您将被要求输入授权重定向 URI。在安装此包时,默认的重定向 URI 为 http://laravel.dev/youtube/callback
。当然,用您的应用程序域名(laravel.dev
)替换域名。
您可以添加多个重定向 URI,例如,您可能想添加本地、测试和生产服务器的 URI。
一旦您对一切满意,创建凭证,您将获得 客户端 ID 和 客户端密钥。现在需要将它们添加到您的 .env
文件中。
GOOGLE_CLIENT_ID=YOUR_CLIENT_ID
GOOGLE_CLIENT_SECRET=YOUR_SECRET
身份验证
出于安全原因,默认禁用了授权路由,以授权您的频道与 Laravel 应用程序。您需要在执行以下操作之前在您的 config/youtubeAPIConfig.php
中启用它们。
现在您的应用程序已配置,我们将进行 Google 的初始身份验证。默认授权路由为 /youtube/auth
。只需在您的应用程序中访问此 URI,您就会被重定向到 Google 以验证您的 YouTube 账户。
假设您在身份验证过程中没有遇到任何错误,您将被重定向回应用程序根目录。(/
)。
检查您的令牌
之前,此包的用户报告了关于其访问令牌的问题。为确保您拥有正确的令牌,您只需检查您之前迁移的 youtube_access_tokens
表,并查看 access_token
列的值。
您需要检查此值中是否存在 refresh_token
。如果这是正确的,您就可以开始上传了。
您还希望禁用用于授权的路由,因为您现在已经认证,这些路由将不再需要。您刚才检查的令牌(假设为 refresh_token
)将自动处理。
上传视频
要上传视频,您只需传递您想要上传的视频的完整路径并指定视频信息。
下面是一个例子
$video = YoutubeAPI::upload($fullPathToVideo, [ 'title' => 'My Awesome Video', 'description' => 'You can also specify your video description here.', 'tags' => ['foo', 'bar', 'baz'], 'category_id' => 10 ]); return $video->getVideoId();
上述代码将返回上传到 YouTube 的视频的 ID。(例如 dQw4w9WgXcQ)
默认情况下,视频上传是公开的。如果您想更改上传的隐私设置,可以在上传方法中传递第三个参数。
例如,下面的代码将上传视频为 unlisted
。
$video = YoutubeAPI::upload($fullPathToVideo, $params, 'unlisted');
自定义缩略图
如果您想为上传设置自定义缩略图,可以通过链式调用使用 withThumbnail()
方法。
$fullpathToImage = storage_path('app/public/thumbnail.jpg'); $video = YoutubeAPI::upload($fullPathToVideo, $params)->withThumbnail($fullpathToImage); return $youtube->getThumbnailUrl();
请注意,缩略图的最大文件大小为2MB。如果您尝试使用超过此大小的缩略图,设置缩略图将无法工作。
删除视频
如果您想删除视频,当然这是上传到您授权的频道,您也将有权限删除它
YoutubeAPI::delete($videoId);
在尝试删除视频时,系统会检查视频是否存在。
创建播放列表
YoutubeAPI::createPlaylist($playlistName,$descriptions,$privacy);
通过频道获取所有播放列表
YoutubeAPI::getAllPlayList();
通过ID获取所有播放列表信息
YoutubeAPI::playListInfoById($playlistId);
获取播放列表项目
YoutubeAPI::playListItemById($playlistId);
将视频插入播放列表
YoutubeAPI::insertVideoInPlaylist($videoId,$playlistId);
从播放列表中移除视频
YoutubeAPI::removeVideoFromPlaylist($videoPlaylistId);
更新播放列表
YoutubeAPI::updatePlaylist($id,$title,$description);
删除播放列表
YoutubeAPI::deletePlaylist($id);