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

使用googleapiclient调用Google Photos API遇UnknownApiNameOrVersion错误

解决Google Photos API调用时的UnknownApiNameOrVersion错误

问题描述

尝试使用Python的googleapiclient.discovery.build方法调用Google Photos API时,触发UnknownApiNameOrVersion错误,相关代码及错误信息如下:

代码示例

from google.oauth2 import service_account
import googleapiclient.discovery

credentials = service_account.Credentials.from_service_account_file('/path/to/service-account-file.json')
scopes = ['https://www.googleapis.com/auth/photoslibrary']
credentials = credentials.with_scopes(scopes)

service = googleapiclient.discovery.build('photoslibrary', 'v1', credentials=credentials)

错误信息

UnknownApiNameOrVersion: name: photoslibrary  version: v1

原因与解决办法

1. 核心原因

Google Photos API未被纳入Google API Discovery Service的默认索引列表,因此discovery.build无法自动识别photoslibrary这个API名称。

2. 替代方案:手动指定发现文档URL

通过直接传入Photos API的发现文档地址,即可成功构建服务对象,修改后的代码如下:

from google.oauth2 import service_account
import googleapiclient.discovery

credentials = service_account.Credentials.from_service_account_file('/path/to/service-account-file.json')
scopes = ['https://www.googleapis.com/auth/photoslibrary']
credentials = credentials.with_scopes(scopes)

# 手动指定Photos API的发现文档URL
service = googleapiclient.discovery.build(
    'photoslibrary',
    'v1',
    credentials=credentials,
    discoveryServiceUrl='https://photoslibrary.googleapis.com/$discovery/rest?version=v1'
)

3. 必要前置检查

  • 确认已在Google Cloud Console中启用Google Photos Library API
  • 服务账号需配置域范围授权(Domain-Wide Delegation):由于Photos API基于用户私有数据,普通服务账号无法直接访问,必须通过域范围授权模拟目标用户的身份
  • 验证作用域正确性:读写使用https://www.googleapis.com/auth/photoslibrary,只读可使用https://www.googleapis.com/auth/photoslibrary.readonly

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:58:11