Google Photos
Not supported in production — Google removed the scope this integration depends on.
On 1 April 2025 Google removed the
photoslibrary.readonly,photoslibrary.sharingandphotoslibraryscopes from the Photos Library API. Since then the library endpoints return only media your own application created, so an existing Google Photos library cannot be enumerated by any third-party app, AeroFTP included. This is a change on Google's side, not a defect in AeroFTP, and no setting or credential works around it.The route back is Google's separate Picker API (
photospicker.mediaitems.readonly), where the user picks items in a Google-hosted dialog, combined withphotoslibrary.readonly.appcreateddatafor content AeroFTP uploaded itself. That is a different consent flow and a different user experience, and it is not implemented yet.Everything below describes the integration as designed. Treat the browse and download sections as currently non-functional against a pre-existing library. Upload still works.
Source: Google Photos APIs — authorization scopes. Last checked: 2026-07-30.
Browse, download and upload photos and videos from your Google Photos library. Albums are shown as folders, media items as files.
Capabilities
| Feature | Supported | Notes |
|---|---|---|
| Browse albums | No longer | Returns only app-created albums since 2025-04-01 |
| Browse all photos | No longer | Virtual [All Photos] folder; app-created media only |
| Browse favorites | No longer | Virtual [Favorites] folder; app-created media only |
| Download originals | Partial | Only for media AeroFTP itself uploaded |
| Upload photos/videos | Yes | New media only; unaffected by the scope removal |
| Create albums | Yes | Via mkdir |
| Delete | No | Google Photos API limitation |
| Rename | No | Google Photos API limitation |
| Thumbnails | Partial | Dynamic sizing via URL parameters, app-created media only |
Requirements
Google Photos uses the same Google Cloud project as Google Drive. You need:
- A Google Cloud project with OAuth2 credentials (Client ID + Client Secret)
- The Photos Library API enabled in that project
- The OAuth scopes
photoslibrary.readonlyandphotoslibrary.appendonlyadded to your consent screen
If you already use Google Drive in AeroFTP, you already have a Google Cloud project. You just need to enable the Photos Library API and add the scopes.
Setup Guide
Step 1: Enable Photos Library API
- Go to Google Cloud Console
- Make sure you have the correct project selected in the top bar (the same one you use for Google Drive)
- Go to APIs & Services > Library
- Search for "Photos Library API"
- Click Enable
[ Screenshot 01 - Photos Library API page with Enable button ]
Step 2: Add OAuth Scopes
- Go to Google Auth Platform > Accesso ai dati (Data Access)
- Click "Aggiungi o rimuovi ambiti" (Add or remove scopes)
- In the manual input box at the bottom, paste these two lines:
https://www.googleapis.com/auth/photoslibrary.readonly
https://www.googleapis.com/auth/photoslibrary.appendonly- Click "Aggiungi alla tabella" (Add to table)
- Verify both scopes appear as checked in the list
- Click Save
[ Screenshot 02 - Scopes page with photoslibrary scopes added ]
!!! tip "Already have Google Drive?" If you already configured Google Drive, your drive and drive.file scopes should already be there. Add the Photos scopes alongside them.
Step 3: Connect in AeroFTP
- Open AeroFTP
- Go to Discover Services > Media Services > Google Photos
- The Client ID and Client Secret are automatically filled from your Google Drive configuration
- Click "Sign in with Google Photos"
- Your browser opens with the Google consent screen
- Select your Google account
- If you see "Google non ha verificato questa app" (Google hasn't verified this app), click "Continua" (Continue) - this is normal for personal OAuth apps
- Grant both permissions:
- View your Google Photos library
- Add items to your Google Photos library
- Click "Continua" (Continue)
- AeroFTP connects and shows your albums
[ Screenshot 03 - AeroFTP Discover Services with Google Photos selected ]
[ Screenshot 04 - Google consent screen with Photos permissions ]
[ Screenshot 05 - AeroFTP connected showing albums ]
Step 4 (Optional): Save Connection
Check "Save this connection" before signing in to add Google Photos to your My Servers list for quick access.
Browsing Your Library
Once connected, you'll see:
/ ← Root: list of albums
/[All Photos]/ ← Virtual folder: all media items
/[Favorites]/ ← Virtual folder: favorited items
/Vacation 2024/ ← Your albums as folders
/Family/ ← Each album contains its photos- Albums appear as folders with a folder icon
- Photos and videos appear as files with their original filename
- File size may show as 0 (Google Photos API does not expose file sizes)
- Modification date shows the photo's creation time (EXIF date)
Downloading Photos
- Double-click a photo to download it
- Right-click a folder to download an entire album
- Photos are downloaded in original quality (full resolution)
- Videos are downloaded in their original format
- Downloaded files preserve the original creation timestamp
!!! note "baseUrl Expiration" Google Photos download URLs expire after ~60 minutes. AeroFTP automatically refreshes them before each download.
Uploading Photos
- Drag and drop photos from your local panel to a Google Photos album
- Or use the Upload button in the toolbar
- Uploaded photos appear in Google Photos within seconds
- Supported formats: JPEG, PNG, GIF, WebP, HEIC, HEIF, BMP, TIFF, RAW formats (NEF, CR2, ARW, DNG), MP4, MOV, AVI, MKV, WebM
!!! warning "Upload Only" You can upload new photos, but you cannot overwrite or delete existing ones. This is a deliberate limitation of the Google Photos API to protect users' memories.
Limitations
- Your existing library is invisible (since 2025-04-01): Google removed
photoslibrary.readonly, so the API returns only media created by the requesting application. Photos you took before connecting AeroFTP, or uploaded through the Google Photos app, will not appear. See the notice at the top of this page. - No delete: The Google Photos API does not allow deleting media items
- No rename: Media items cannot be renamed via the API
- No move between albums: Moving photos between albums is not supported
- Upload only: You can add new photos but cannot modify existing ones created by other apps
- Shared storage: The 15 GB free storage is shared with Google Drive and Gmail
- File size not available: Google Photos API does not expose file sizes in listings
Troubleshooting
403 Forbidden Error
This means either:
- Photos Library API not enabled: Go to Google Cloud Console > APIs & Services > Library > search "Photos Library API" > Enable
- Wrong project: Make sure you're enabling the API in the same project where your OAuth Client ID was created. Check the Client ID under Google Auth Platform > Client
- Scopes not added: Go to Google Auth Platform > Data Access > Add the
photoslibrary.appendonlyscope. Note thatphotoslibrary.readonlywas removed by Google on 2025-04-01 and can no longer be granted — if the consent screen rejects it, that is expected, not a misconfiguration on your side. - Stale token: If you enabled the API after your first sign-in, the old token is invalid. Open AeroFTP DevTools console (Ctrl+Shift+I) and run:
await __TAURI_INTERNALS__.invoke('delete_credential', { account: 'oauth_googlephotos' })Then sign in again.
Callback Timeout
If you see "Callback error: Timeout", the OAuth flow took too long. Click "Sign in with Google Photos" again and complete the Google consent screen quickly (within 5 minutes).
"Google hasn't verified this app"
This is normal when using your own OAuth credentials. Click "Continue" to proceed. This message will disappear once the app is verified by Google.