revolution / laravel-google-photos
Laravel 的 Google Photos API
6.0.3
2024-09-23 02:12 UTC
Requires
- php: ^8.2
- google/photos-library: ^1.7
- illuminate/support: ^11.0
- revolution/laravel-google-sheets: ^7.0
Requires (Dev)
- orchestra/testbench: ^9.0
This package is auto-updated.
Last update: 2024-09-23 02:14:13 UTC
README
https://developers.google.com/photos/
要求
- PHP >= 8.2
- Laravel >= 11.0
版本控制
- 基本: semver
- 删除旧的 PHP 或 Laravel 版本:
+0.1
. composer 应该能很好地处理。 - 仅支持最新主要版本(
master
分支),但您可以向旧分支提交PR。
安装
composer require revolution/laravel-google-photos
获取 API 凭证
从 https://developers.google.com/console
启用 Photos Library API
。
config/google.php
'client_id' => env('GOOGLE_CLIENT_ID', ''), 'client_secret' => env('GOOGLE_CLIENT_SECRET', ''), 'redirect_uri' => env('GOOGLE_REDIRECT', ''), 'scopes' => [ 'https://www.googleapis.com/auth/photoslibrary.appendonly', 'https://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata', 'https://www.googleapis.com/auth/photoslibrary.edit.appcreateddata', ], 'access_type' => 'offline', 'approval_prompt' => 'force', 'prompt' => 'consent', //"none", "consent", "select_account" default:none
目前,您只能通过 API 上传的文件。
'access_type' => 'offline'
是获取刷新令牌所必需的。
Google Photos API 不支持服务帐户。
config/service.php for Socialite
'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID', ''), 'client_secret' => env('GOOGLE_CLIENT_SECRET', ''), 'redirect' => env('GOOGLE_REDIRECT', ''), ],
.env
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT=
使用示例
目前,Google Photos Library API 只允许访问 通过 API 上传的文件,因此难以自由使用。
与其他帐户一起使用需要审查。
仍然可以单向上传,因此最好仅使用 上传功能到您的帐户。
- 在 Google 控制台中启用 Photos Library API 并添加自己作为测试用户。
- 通过 Socialite 获取
refresh_token
。将其保存在用户表中。 - 上传照片。
// Command or etc use App\Models\User; use Illuminate\Support\Facades\Storage; use Revolution\Google\Photos\Facades\Photos; Photos::withToken(User::find(1)->refresh_token); with(Photos::upload(Storage::get('test.png'), 'test.png'), function (string $token) { Photos::batchCreate([$token]); });
PhotosLibraryClient
此包依赖于 google/photos-library
并自动委托给 PhotosLibraryClient 上的方法。
- https://github.com/google/php-photoslibrary/blob/main/src/Google/Photos/Library/V1/PhotosLibraryClient.php
- https://github.com/google/php-photoslibrary/blob/main/src/Google/Photos/Library/V1/Gapic/PhotosLibraryGapicClient.php
use Revolution\Google\Photos\Facades\Photos; $album = Photos::withToken('token')->updateAlbumTitle($albumId, $newTitle);
PagedListResponse
listMediaItems()
和 listAlbums()
返回一个 PagedListResponse
,基本上用于 foreach。
use Revolution\Google\Photos\Facades\Photos; use Google\ApiCore\PagedListResponse; $items = Photos::withToken('token')->listMediaItems(); foreach ($items as $item){ dump($item->getBaseUrl()); }
创建新相册
PhotosLibraryResourceFactory
有各种创建方法。
use Google\Photos\Library\V1\PhotosLibraryResourceFactory; use Revolution\Google\Photos\Facades\Photos; $newAlbum = Photos::withToken('token')->createAlbum(PhotosLibraryResourceFactory::album('title')); dump($newAlbum->getId()); dump($newAlbum->getTitle());
许可证
MIT