rajagonda / youtube

使用Laravel 5上传视频到YouTube。

v1.6 2019-11-20 09:05 UTC

This package is auto-updated.

Last update: 2024-09-20 20:16:10 UTC


README

请注意,此包只能与单个YouTube账户一起使用,且不支持多个账户。

安装

要安装,请使用以下命令通过Composer拉取包。

composer require rajagonda/youtube

现在在config/app.php中注册服务提供者

'providers' => [
    ...
    Rajagonda\Youtube\YoutubeServiceProvider::class,
],

并将别名添加到同一文件中。

'aliases' => [
    ...
    'Youtube' => Rajagonda\Youtube\Facades\Youtube::class,
],

配置

现在您需要发布youtube.php配置和迁移。

php artisan vendor:publish --provider="Rajagonda\Youtube\YoutubeServiceProvider"

现在您需要运行php artisan migrate来创建youtube_access_tokens表,该表将包含您在正确认证后的访问令牌。

获取凭证

如果您还没有,您需要在谷歌开发者控制台上创建一个应用。然后您需要进入控制台中的凭证部分来创建服务器密钥。

您将需要输入授权的重定向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中启用它们。

现在您的应用程序已配置,我们将进行与谷歌的初始身份验证。默认授权路由是/youtube/auth。只需访问您的应用程序中的此URI,您将被重定向到谷歌以验证您的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);

在尝试删除视频时,会先检查该视频是否存在。

问题

如果您有任何问题,请随时提交问题。