Google api 试图从本机Windows服务使用Google Drive API会抛出“未授权请求作用域”

Google api 试图从本机Windows服务使用Google Drive API会抛出“未授权请求作用域”,google-api,google-drive-api,Google Api,Google Drive Api,这里有一点介绍我的来历:尽可能少的开发工作,我想访问Google Drive scope:永久删除垃圾桶中当前的文件 在Windows系统上,我安装了Google Drive,它正在同步目录文件夹中的文件。当文件被删除时,它们会移动到Google Drive中的垃圾桶中,但它们从未被删除,从而导致帐户超过配额。负责维护本地windows Google Drive文件夹结构中的文件的windows服务是用C编写的,因此我想利用它联系Google Drive,利用驱动器API永久删除垃圾箱中的文件

这里有一点介绍我的来历:尽可能少的开发工作,我想访问Google Drive scope:永久删除垃圾桶中当前的文件

在Windows系统上,我安装了Google Drive,它正在同步目录文件夹中的文件。当文件被删除时,它们会移动到Google Drive中的垃圾桶中,但它们从未被删除,从而导致帐户超过配额。负责维护本地windows Google Drive文件夹结构中的文件的windows服务是用C编写的,因此我想利用它联系Google Drive,利用驱动器API永久删除垃圾箱中的文件

但是,在使用Google Drive API时,我遇到了两个问题:

请求范围时https://www.googleapis.com/auth/drive,我得到以下回应 错误:无效的\u作用域 错误\u说明:未授权请求作用域:[https://www.googleapis.com/auth/drive] 错误\u uri:http://code.google.com/apis/accounts/docs/OAuth2.html 我认为已经找到了解决问题1的方法,因为有些人建议使用范围https://docs.google.com/feeds 相反但是,当GoogleDrive的帐户所有者确认用户代码时,我从未获得预期的访问和刷新令牌。相反,投票将继续收到 错误:授权\u挂起。 为了完成这个故事:因为我没有Windows服务的UI,所以我选择遵循OAuth 2.0的设备说明进行正确的身份验证。用户收到用于身份验证的URL以及每封电子邮件的用户代码。因此,Windows服务在提交客户端id和作用域时将为最终用户生成一封电子邮件,其中包括收到的验证url和用户代码

在使用scope时,我注意到没有任何应用被添加到Google Drive帐户上的授权应用列表中。然而,当使用GoogleAPI浏览器时,它被添加到了列表中。所以我的直觉是这个作用域不会在访问Google Drive时切断它,因此错误授权一直被抛出

所以底线问题是:谷歌API会不会根本无法访问谷歌硬盘,我必须使用谷歌硬盘SDK而不是谷歌API?在这种情况下,我想,我必须创建一些能够与我的Windows服务通信的web UI-正确吗


真的非常感谢大家对我已经为此奋斗了几个晚上的细节的深刻理解。谢谢你

在更改范围后,您是否要求用户再次验证您的身份?您正在使用Google.net客户端库吗?是的,用户正在重新验证。Google.Net客户端库是Google Drive SDK。GoogleDrive API允许您通过POST访问驱动器,然后轮询状态。SDK要求您实现服务回调,因为它使用的是WCF afaik。API是专门为没有OAuth 2.0工作流UI的Windows应用程序[service]设备提供的。客户端库的正确作用域是:DriveService.scope.Drive我将再次检查用户是否正在对您进行身份验证。您似乎没有被授予访问新范围的权限。或者您正在使用旧的刷新令牌。当他们重新授权时,您将需要一个新的令牌。一旦使用旧令牌,用户将收到一个特定错误。作为开发人员,我将向我拥有的帐户发送电子邮件,以验证工作流是否正常工作。我真的成功了!你已经授权。。。来自谷歌的消息。然而,我确实相信,在杂草的深处,“feed”和“drive”的范围是有区别的。为什么Google Drive在请求“驱动器”作用域时会响应“未授权请求作用域”消息?这是我不理解的部分之一,是的,我肯定为我的帐户启用了驱动器API。一旦使用旧令牌,用户就会收到一个特定错误。因为它没有使用新的作用域进行身份验证。使用新令牌并删除旧令牌。