2023年Google Photos API使用求助:公开相册访问及认证疑问
2023年Google Photos API JavaScript示例(适配新身份验证)及公开相册访问说明
关于公开相册的认证要求
是的,即使访问公开相册,调用Google Photos API也必须通过OAuth 2.0认证。Google Photos API的设计逻辑是所有请求都需要身份验证,目的是限制请求频率、防止滥用,哪怕是公开可见的资源也不例外。没有无需认证的公开访问端点可用。
适配新身份验证的2023年JS示例
你遇到的废弃提示是因为使用了旧版的gapi.auth2认证库,2023年之后需要改用Google Identity Services (GIS)客户端库,以下是完整的适配示例:
1. 引入GIS脚本
在HTML中添加:
<script src="https://accounts.google.com/gsi/client" async defer></script>
2. 初始化授权客户端并调用API
// 替换为你的Google Cloud客户端ID const CLIENT_ID = "YOUR_CLIENT_ID"; // 要访问的公开相册ID const ALBUM_ID = "TARGET_ALBUM_ID"; // 只读权限范围足够访问相册内容 const SCOPES = ["https://www.googleapis.com/auth/photoslibrary.readonly"]; function initGoogleAuth() { // 初始化GIS客户端 google.accounts.oauth2.initTokenClient({ client_id: CLIENT_ID, scope: SCOPES.join(" "), callback: handleTokenResponse, }); } function handleTokenResponse(response) { if (response.error !== undefined) { throw response; } // 令牌获取成功,调用albums.get接口 fetch(`https://photoslibrary.googleapis.com/v1/albums/${ALBUM_ID}`, { headers: { "Authorization": `Bearer ${response.access_token}` } }) .then(res => res.json()) .then(data => { console.log("相册内容:", data); // 在这里处理返回的相册数据 }) .catch(err => console.error("API调用失败:", err)); } // 触发授权流程 function startAuthFlow() { const tokenClient = google.accounts.oauth2.getTokenClient(); tokenClient.requestAccessToken({prompt: "consent"}); } // 页面加载完成后初始化 document.addEventListener("DOMContentLoaded", initGoogleAuth);
前置准备
- 在Google Cloud Console中创建项目,启用「Photos Library API」
- 配置OAuth同意屏幕(测试阶段可选择「外部」类型,添加测试用户)
- 生成Web应用类型的客户端ID,替换示例中的
YOUR_CLIENT_ID
关键说明
- 使用GIS库替代旧的
gapi.auth2,可以解决你遇到的废弃提示问题 - 授权范围使用
photoslibrary.readonly即可,无需请求写权限 - 如果访问他人的公开相册,需确保该相册设置为「任何人都能查看」,且你的授权账号可以通过浏览器正常访问该相册
内容的提问来源于stack exchange,提问作者Tim Herzog
相关产品推荐
相关产品推荐

