aidens / youtube

针对Laravel的YouTube 3 API包

2.0.1 2021-04-08 15:44 UTC

This package is auto-updated.

Last update: 2024-09-08 23:15:10 UTC


README

请注意,此包仅适用于单个YouTube账户,不支持多个账户。

安装

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

将以下内容添加到您的composer.json文件中

"repositories": {
	"laravel-youtube-api-3": {
		"type": "package",
		"package": {
			"name": "aiden/youtube",
			"version": "1.1",
			"source": {
				"url": "https://github.com/jhemmmm/Laravel-Youtube-Api-3.git",
				"type": "git",
				"reference": "origin/master"
			},
			"autoload": {
				"psr-4": {
					"ad\\Youtube\\": "src/"
				}
			},
			"autoload-dev": {
				"psr-4": {
					"ad\\Youtube\\Tests\\": "tests/"
				}
			},
			"minimum-stability": "stable",
			"extra": {
				"laravel": {
					"providers": [
						"ad\\Youtube\\YoutubeAPIServiceProvider"
					],
					"aliases": {
						"Youtube": "ad\\Youtube\\Facades\\YoutubeAPI"
					}
				}
			}
		}
	}
},

并将以下内容也添加到您的"require"和"require-dev"部分

"require": {
	"aiden/youtube": "1.0",
	"php": "^7.2",
	"illuminate/support": "^6.13",
	"nesbot/carbon": "^2.0",
	"google/apiclient": "^2.2",
},
"require-dev": {
	"orchestra/testbench": "^4.6",
	"phpunit/phpcov": "^6.0",
	"phpunit/phpunit": "~8.0"
},

使用以下命令更新您的composer

composer update

或者简化复制粘贴

composer require aidens/youtube

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

'providers' => [
    ...
    aiden\Youtube\YoutubeAPIServiceProvider::class,
],

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

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

配置

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

php artisan vendor:publish --provider="aiden\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);

我还添加了Google Drive支持。

将文件上传到Google Drive(您的文件将被自动共享到公共

YoutubeAPI::uploadDrive($path, $data = array('name' => 'foo', 'mimeType' => 'bar'));

删除文件

YoutubeAPI::deleteDrive($fileId);