syntac / youtube
使用Laravel 6上传视频到YouTube。
Requires
- php: ^7.0
- google/apiclient: ^2.2
- illuminate/support: ^6.0
Requires (Dev)
- orchestra/testbench: ~3.2
- phpunit/phpcov: ~3.0
- phpunit/phpunit: ~5.0
This package is auto-updated.
Last update: 2024-09-17 12:00:35 UTC
README
请注意,此包只能与单个YouTube账户一起工作,并且不支持多个账户。
安装
要安装,请使用以下命令通过Composer拉取包。
composer require syntac/youtube
现在在config/app.php
中注册服务提供者
'providers' => [ ... Syntac\Youtube\YoutubeServiceProvider::class, ],
并将别名添加到同一文件中。
'aliases' => [ ... 'Youtube' => Syntac\Youtube\Facades\Youtube::class, ],
配置
现在您需要发布youtube.php
配置和迁移。
php artisan vendor:publish --provider="Syntac\Youtube\YoutubeServiceProvider"
现在运行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/youtube.php
中启用它们。
现在应用程序已配置,我们将进行与Google的初始认证。默认的授权路由是/youtube/auth
。只需在您的应用程序中访问此URI,您就会被重定向到Google以认证您的YouTube账户。
假设认证过程中没有出现任何错误,您将被重定向回应用程序根目录。(/
)。
查看令牌
之前,使用此包的用户报告了访问令牌的问题。为确保您拥有正确的令牌,您只需查看您之前迁移的youtube_access_tokens
表,并查看access_token
列中的值。
您需要检查该值中是否存在refresh_token
。如果一切正确,您就可以开始上传了。
您还希望禁用用于授权的路线,因为您现在已认证,它们将不再需要。您刚刚查看的令牌(假设为refresh_token
)将自动处理。
上传视频
要上传视频,您只需传递您希望上传的视频的完整路径,并指定视频信息。
以下是一个示例
$video = Youtube::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)
默认情况下,视频上传是公开的。如果您想更改上传的隐私性,可以在上传方法中传递第三个参数来做到这一点。
例如,以下代码将视频上传为未列出
。
$video = Youtube::upload($fullPathToVideo, $params, 'unlisted');
自定义缩略图
如果您想为上传设置自定义缩略图,可以使用通过链式调用的withThumbnail()
方法。
$fullpathToImage = storage_path('app/public/thumbnail.jpg'); $video = Youtube::upload($fullPathToVideo, $params)->withThumbnail($fullpathToImage); return $youtube->getThumbnailUrl();
请注意,缩略图的文件大小最大为2MB。如果尝试使用超过此大小的缩略图,则设置缩略图将无法工作。
更新视频
要更新视频,只需传递您要更新的视频的videoId
以及指定您的视频信息。
以下是一个示例
$video = Youtube::update($videoId, [ 'title' => 'My Awesome Video', 'description' => 'You can also specify your video description here.', 'tags' => ['foo', 'bar', 'baz'], 'category_id' => 10 ], $privacy); return $video->getVideoId();
注意:此请求是明确的。请求中省略的任何参数将被删除。
删除视频
如果您想删除一个视频,当然这个视频是上传到您授权的频道,您也有权限删除它
Youtube::delete($videoId);
在尝试删除视频时,它将检查是否存在。
问题
如果您有任何问题,请随时提交一个问题。