【问题标题】:Google drive API adding ../auth/drive scope without authorized domain谷歌驱动 API 添加 ../auth/drive 没有授权域的范围
【发布时间】:2020-06-11 22:26:30
【问题描述】:

背景

我是 Google Drive API 的新手,正在尝试使用 Google Drive 递归所有权更改工具:https://github.com/davidstrauss/google-drive-recursive-ownership/

  • OAuth 2 范围:https://www.googleapis.com/auth/drive (source)
  • 驱动 API 版本:v2 (source)

我跟随this tutorial 生成我的client_secret.json 文件。此外,我将范围 ../auth/drive.file 添加到了我的 OAuth 同意屏幕(应用名为 gdrive transfer ownership)。

作为练习,我尝试转移包含一个 jpg 文件的文件夹的所有权(两者都位于我的 Google 云端硬盘中,我是所有者)。当我从本地笔记本电脑运行该工具时,会发生以下情况:

  1. 我像这样运行transfer.py
python transfer.py "TestFolderName" "new_owner@gmail.com"
  1. 我将授权链接复制到浏览器中
  2. 我点击了几个菜单,授予权限

  1. 我将浏览器中的代码复制到程序中
  2. 脚本无法更新jpg 文件的所有权权限,提示"Insufficient permissions for this file"
An error occurred updating ownership permissions: <HttpError 403 when requesting https://www.googleapis.com/drive/v2/files/some_text/permissions/some_num?transferOwnership=true&alt=json returned "Insufficient permissions for this file">
  1. 脚本成功更新文件夹的所有者

研究

根据这个问题:Insufficient permissions for this file, unable to share link, 403

还有这个问题在 GitHub 上:https://github.com/thephpleague/oauth2-google/issues/58

我认为我需要在我的 OAuth 同意屏幕中添加适当的范围 (../auth/drive)。


问题

当我尝试添加 ../auth/drive 范围时,Google 会显示 Sensitive scope that requires verification。我没有homepage URL 也没有privacy policy URL

  • 如何在不需要验证和/或授权域的情况下添加此范围?
  • 还是我做错了完全不同的事情?

【问题讨论】:

  • 我可以确认一下您的情况吗?关于I try to transfer ownership of a folder containing one jpg file,文件夹和jpg文件在哪里?这些在您的 Google Drive 中吗?文件夹和 jpg 文件的所有者是谁?
  • @Tanaike 是的,我是里面的文件夹和文件的所有者。该文件夹位于我的 Google Drive 中。我还用这些信息更新了问题
  • 感谢您的回复。在您的情况下,您希望将文件夹的所有者和文件夹中的文件从您那里转移给 Google 帐户的其他用户。我可以这样理解。如果我的理解是正确的,你能提供复制你的问题的脚本吗?因为从你的问题来看,我无法理解。
  • 好的,是的@Tanaike 我再次更新了我的问题,提供了更多信息。我在 GitHub 存储库(有问题的链接)中使用了 transfer.py 脚本。我还添加了我如何称呼transfer.py。这有帮助吗?您需要更多信息吗?
  • 您认为问题在于我有一个普通的 google 帐户电子邮件,而不是 G Suite 的成员吗?

标签: google-drive-api


【解决方案1】:

正如您在Google's support page 上看到的那样,Google Drive 的 API 目前属于敏感范围,并将很快在 3 月份作为受限范围推出。如果您想在该范围内授权 OAuth 应用程序,则必须注册非常严格的要求和应用程序流程。如果您只想对范围进行授权,您可以从Google OAuth playground 获取授权码。只需找到 Drive API,对自己进行授权,然后获取您的授权码。

【讨论】:

  • 确认一下,我真正想做的是递归地将文件/文件夹的所有权从我自己的个人谷歌驱动器转移到朋友的驱动器。我可以通过操场这样做吗?
  • 您应该能够从操场上获取授权码,然后将其输入到您的程序中。
【解决方案2】:

检查此链接: https://developers.google.com/drive/api/v3/quickstart/dotnet

第 1 步:开启 Drive API 单击此按钮可创建新的 Cloud Platform 项目并自动启用 Drive API:

启用云端硬盘 API

在出现的对话框中单击下载客户端配置并将文件 credentials.json 保存到您的工作目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多