使用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
相关产品推荐
相关产品推荐

