无法从Google云端硬盘404检索文件元数据

时间:2012-07-06 01:36:13

标签: ruby-on-rails google-drive-api

我对Google Drive API存在一些非常奇怪的问题。

在这里跟我说,有很多东西可以解释。

我最初使用我的一个Google帐户运行API - 为简单起见,我们将其称为test@google.com。我让Google Picker用户界面正常工作,它正确显示了我的云端硬盘帐户中的文件列表。

我将其设置为我的APP_ID,并且我有一些服务器端逻辑,使用官方google-ruby-api-client gem来使用drive.files.get端点连接到Drive API。然后,我可以使用以下代码段下载文件的元数据:

require 'google/api_client'

client = Google::APIClient.new

# client ID and secret from Google APIs Console
client.authorization.client_id = "{CLIENT_ID}"
client.authorization.client_secret = "{SECRET}"
client.authorization.redirect_uri = "http://myapp.com/users/auth/gdrive"
# access token stored in database from oauth2 flow
client.authorization.access_token = "TOKEN"

client.authorization.scope = [
  "https://www.googleapis.com/auth/drive.file",
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/userinfo.profile"
]
result = client.execute!(
  :api_method => 'drive.files.get',
  :version => 'v2',
  :parameters => { 'fileId' => params[:file_id] })

使用test@google.com帐户我尝试了此操作,结果会返回文件的元数据,并且我可以下载该文件。所有的桃子。

当我使用不同的 Google帐户时出现问题。我可以访问Picker中的文件,但是当使用上面的fileId将请求发送到服务器时,我只是一直收到404错误,说该文件不存在。我还尝试使用谷歌提供的OAuth 2.0 Playground访问文件的元数据,但奇怪的是我仍然遇到了这个错误,但是当我使用{时,我也得到了相同的404错误{1}}帐号。

我唯一能想到的是,我提交了一个包含所有Google云端硬盘详细信息的应用版本,并通过Chrome网上应用店安装了该应用。在我意识到它作为支持驱动器的应用程序出现在每个人之后,我立即将其删除并将manifest.json文件更改回其正常的非驱动器启用状态。我确实读过你应该通过Chrome网上商店安装该应用程序才能正常工作,但我也读过那不再是这种情况了。您安装的Chrome网上应用店应用是否存储在Google的云端,以便他们知道是为特定帐户安装的?或者是本地安装的网上商店应用程序?我很困惑。

我在这里缺少什么?在很长一段时间里,我还没有对API感到沮丧。请帮忙!

1 个答案:

答案 0 :(得分:1)

感谢Ali Afshar的答案 - 解决方案(暂时)是暂时使用Google云端硬盘的全部范围,而不仅仅是drive.file范围。

e.g。而不是使用这个范围,

https://www.googleapis.com/auth/drive.file

改为使用这个:

https://www.googleapis.com/auth/drive