Google drive api Google Drive API webContentLink重定向到其他域

Google drive api Google Drive API webContentLink重定向到其他域,google-drive-api,google-drive-shared-drive,Google Drive Api,Google Drive Shared Drive,我正在使用Google Drive API访问我的团队硬盘上的文件。我的服务器应用程序使用OAuth2获取访问令牌。然后,我使用这个令牌作为承载令牌来进行API驱动器调用。当我尝试从team drive下载映像时,调用端点时列出的文件之一是: { “id”:“, “mimeType”:“图像/jpeg”, “WebContent链接”:https://drive.google.com/a//uc?id=SOME_GOOGLE_DRIVE_ID&export=download", “文件扩展名”:

我正在使用Google Drive API访问我的团队硬盘上的文件。我的服务器应用程序使用OAuth2获取访问令牌。然后,我使用这个令牌作为承载令牌来进行API驱动器调用。当我尝试从team drive下载映像时,调用端点时列出的文件之一是:

{
“id”:“,
“mimeType”:“图像/jpeg”,
“WebContent链接”:https://drive.google.com/a//uc?id=SOME_GOOGLE_DRIVE_ID&export=download",
“文件扩展名”:“jpg”,
“大小”:“108794”
}

当我尝试下载请求头中具有相同承载令牌的webContentLink时,我被重定向到

承载令牌似乎不适用于这个googleusercontent.com域,我的服务器最终被转发到登录页面(这对服务器应用程序不好)

在尝试发出第二个请求时,我注意到响应头包含:

访问控制允许原点:*
访问控制允许凭据:false
访问控制允许方法:获取、选项
P3P:CP=“这不是P3P策略!请参阅http://www.google.com/support/accounts/answer/151657?hl=en 有关详细信息,请参阅。“

我假设最后一个标题指向了问题所在,它与重定向到另一个域有关,但我不确定我需要做什么。我认为通过OAuth2授予的具有适当范围的访问令牌应该允许我做任何事情。它似乎对其他一切都有效(访问电子表格、文档等),但我很难用这种方式下载图像

以下是请求和响应的详细列表:

  • 请求:OAuth2调用以获取具有我的客户端id和密码的访问令牌
  • 响应:收到访问令牌。好
  • 请求:
    https://www.googleapis.com/drive/v3/files?corpora=teamDrive&includeTeamDriveItems=true&supportsTeamDrives=true&teamDriveId=[myTeamDriveID]
    标题中带有授权令牌
  • 答复。状态200。收到的文件列表。太棒了
  • 对于每个图像,请求webContentLink,并在标头中使用授权令牌
  • 请求:
    https://drive.google.com/a/[myTeamDriveDomain]/uc?id=[fileID]&export=下载
  • 响应:状态302,带有P3P标题
    CP=“这不是P3P策略!
    重定向到
    http://docs.google.com/a/[myTeamDriveDomain]/nonDesigner?nonce=[alphaNumericID]&继续=https://doc-0g-08-docs.googleusercontent.com/docs/securesc/[longAlphaNumericID]/[longAlphaNumericID]/[longNumericID]/[longNumericID]/[longNumericID]/[longAlphaNumericID]?e%3D下载%26h%3D[longNumericID]&哈希=[hashValue]
  • 请求:从头中带有授权令牌的上一个响应获取重定向url
  • 响应:状态302。重定向到
    https://www.google.com/a/]myTeamDriveDomain]/ServiceLogin?被动=1209600&osid=1&continue=[previousRedirectURL]&followup=[previousRedirectURL]
  • 请求:从头中带有授权令牌的上一个响应获取重定向url
  • 响应:状态200。这是登录页面。调试时,如果我输入凭据,我将获得映像,但服务器无法执行此操作。它需要能够使用访问令牌

  • 你知道我做错了什么吗?

    如果你打算将文件内容下载到你的应用程序中,你不需要使用webContentLink。你只需
    alt=media
    获取文件id(对于二进制文件)或导出到特定格式(对于谷歌文档)。请参阅
    https://developers.google.com/drive/api/v3/manage-downloads

    您能否添加任何详细信息,如:使用的代码、遇到的错误问题?、向社区展示您的尝试。谢谢!这就是诀窍。我想我完全误解了如何做到这一点。对于阅读本文的其他人,我只是发布了一个GET to
    https://www.googlapis.com/drive/v3/files/[fileid]?supportsTeamDrives=true&alt=media
    ,头中有我的授权令牌,它就工作了。