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

使用Google Identity Services访问Photos Library API的问题

解决Google Photos API访问问题:GIS获取的Token正确用法

核心问题

你拿到的idToken(即response.credential)是用于验证用户身份的凭证,不能直接用来访问Google Photos REST API。Photos API需要的是OAuth 2.0标准的access_token,而非id_token。

正确解决方案

1. 配置GIS时指定Photos API权限范围

初始化Google Identity Services(GIS)授权客户端时,必须明确添加Photos API所需的权限范围,按需选择:

  • https://www.googleapis.com/auth/photoslibrary.readonly(只读访问相册)
  • https://www.googleapis.com/auth/photoslibrary(读写权限)

2. 获取包含access_token的授权响应

不要仅提取credential(idToken),需通过GIS的授权流程获取完整的token响应,其中包含访问API所需的access_token。调整后的代码示例如下:

// 初始化GIS授权客户端
const client = google.accounts.oauth2.initTokenClient({
  client_id: '你的客户端ID',
  scope: 'https://www.googleapis.com/auth/photoslibrary.readonly',
  callback: async (tokenResponse) => {
    if (tokenResponse.error !== undefined) {
      throw tokenResponse.error;
    }
    // 使用access_token调用Photos API
    loadPhotos(tokenResponse.access_token);
  },
});

// 触发授权流程
function requestAccessToken() {
  client.requestAccessToken({prompt: ''});
}

// 调用Photos API获取照片列表
async function loadPhotos(accessToken) {
  try {
    const response = await fetch('https://photoslibrary.googleapis.com/v1/mediaItems', {
      headers: {
        'Authorization': `Bearer ${accessToken}`
      }
    });
    const data = await response.json();
    // 处理返回的照片数据
    console.log(data);
  } catch (error) {
    console.error('访问Photos API失败:', error);
  }
}

3. 关键注意事项

  • 确保你的Google Cloud项目已启用Google Photos Library API,并在OAuth同意屏幕中添加了对应的权限范围。
  • 若需长期访问,可通过GIS获取refresh_token(需满足离线访问配置),用于刷新过期的access_token。
  • 无需额外第三方库,原生GIS配合fetch API即可完成需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:03:17