You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用google-api-python-client通过Python调用Google Photos API

解决Google Photos API Python客户端库使用问题

我完全懂你此刻的困惑——明明按要求装了google-api-python-client,却找不到任何和Photos API直接相关的模块或文件。这其实是因为Google Photos Library API的客户端是通过动态发现机制构建的,而非预生成的独立模块。下面是具体的解决步骤,帮你用官方客户端库而非手动调用REST API:

第一步:补全必要依赖

除了google-api-python-client,你还需要安装认证相关的库(现在Google官方推荐使用google-auth系列套件):

pip install google-api-python-client google-auth google-auth-oauthlib google-auth-httplib2

第二步:构建Photos Library API服务对象

Google Photos Library API不会在安装后直接生成可见的本地模块,而是通过discovery.build()方法动态创建服务实例。这里是完整的实操流程:

1. 完成OAuth2认证配置

首先你需要在Google Cloud Console创建项目、启用Photos Library API,并下载OAuth2凭据文件(通常命名为credentials.json)。然后用以下代码完成认证流程:

from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import pickle
import os.path

# 根据你的业务需求调整权限范围,这里以只读权限为例
SCOPES = ['https://www.googleapis.com/auth/photoslibrary.readonly']

creds = None
# 检查是否有已保存的有效凭据
if os.path.exists('token.pickle'):
    with open('token.pickle', 'rb') as token:
        creds = pickle.load(token)
# 无有效凭据时触发登录流程
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            'credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    # 保存凭据供后续使用,避免重复登录
    with open('token.pickle', 'wb') as token:
        pickle.dump(creds, token)

2. 构建服务并调用API接口

通过discovery.build创建服务对象后,你就可以像调用普通Python方法一样调用Photos API的各种接口了:

from googleapiclient.discovery import build

# 动态构建Photos Library API服务实例
service = build('photoslibrary', 'v1', credentials=creds)

# 示例:调用API列出用户的前10个相册
results = service.albums().list(pageSize=10).execute()
albums = results.get('albums', [])

if not albums:
    print('未找到任何相册。')
else:
    print('用户相册列表:')
    for album in albums:
        print(f"{album['title']} (ID: {album['id']})")

关键说明

  • 为什么看不到Photos相关模块?因为google-api-python-client采用发现式API设计,像Photos Library这类相对小众的API不会预生成本地模块,而是在运行时通过Google的API发现文档动态构建服务方法。
  • 你可以通过service.__dict__查看所有可用的API方法,也可以对照官方API文档的REST端点,对应转换为服务对象的调用方式(比如REST的GET /v1/albums就对应service.albums().list().execute())。

内容的提问来源于stack exchange,提问作者Ido Ran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:42:15