谷歌云盘API无法列出我的盘中的文件(Ruby)

3
我正在编写一个Ruby程序以访问我的谷歌云盘,以获取我的文件。 我想使用服务器到服务器连接来避免其他人接受权限,因此我使用为“服务帐户客户端ID”生成的p12密钥。 连接是好的,我成功地插入了一个文件。
当我尝试列出所有文件时,我的问题是:调用很好,但我只得到2个文件:先前插入的文档和一个名为“如何开始使用Drive”的pdf(我有很多其他文件,如文档、电子表格、演示文稿、图片等...)。
我使用我的谷歌帐户创建了我的密钥,但我无法访问我的文件。此外,我使用程序插入的文档不会出现在我的谷歌云端硬盘中。
关于API,我错过了什么?我拿到的是哪个文件而不是我的文件? 这真的就像我没有使用同一个谷歌云端硬盘帐户。 这是我用来列出我的文件的代码:
# Prepare the OAuth client / Service Account 
client = Google::APIClient.new(application_name: 'Google Drive Ruby test', application_version: '0.0.1')
key = Google::APIClient::KeyUtils.load_from_pkcs12('key.p12', 'notasecret')
client.authorization = Signet::OAuth2::Client.new(
    :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
    :audience => 'https://accounts.google.com/o/oauth2/token',
    :scope => 'https://www.googleapis.com/auth/drive',
    :issuer => '***@developer.gserviceaccount.com',
    :signing_key => key)

client.authorization.fetch_access_token!

# Get the Drive API
drive = client.discovered_api('drive', 'v2')

# Upload a file 
api_result = client.execute(
    :api_method => drive.files.list,
    :parameters => [])

非常感谢您! Julian

请粘贴执行 files.list 命令的代码以及最好的 HTTP 跟踪结果。您确认正在正确地遵循 nextPageToken 吗?当您说“我的文件”时,您确实意识到服务帐户不是您的文件,而是一个独立的帐户吗? - pinoyyid
这是我正在测试的完整代码。我只是打印api_result.data对象。当我说我的文件时,我想访问通过浏览器创建的电子表格或文档。 - Julian Le Calvez
1
啊,这就是问题所在。服务帐户不是您通过浏览器更新的Drive帐户。请参见http://stackoverflow.com/questions/28784575/google-drive-help-required-access-to-own-drive-account/28789719#28789719和https://dev59.com/AWIj5IYBdhLWcg3w6JHU。顺便说一句,在您的代码中,files.list上面的注释说“上传文件”,这就是我第一次错过它的原因。 - pinoyyid
抱歉之前的评论,只是因为我先尝试了上传,然后才是列表,但我没有更改评论 :) 感谢提供链接,我会尝试使用OAuth Playground! - Julian Le Calvez
@pinoyyid,感谢您提供的链接。这样做很有效!如果您想将其作为答案发布,我会接受它 ;) - Julian Le Calvez
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接