我正在使用gem Google - API -client通过Google Drive API下载文件。
x = Google::Apis::DriveV2
drive = x::DriveService.new
drive.authorization = auth
files = drive.list_files
files.items.each_with_index do |file, index|
url_to_index = file.export_links.select { |k, v| v if k == 'text/plain' }
file_content = open(url_to_index["text/plain"]).read
end
问题是file_content返回谷歌登录屏幕而不是文本/纯格式的文件。当我的Rails应用程序打开URL时,它似乎无法访问文本文件。
让我的Rails应用程序以文本格式抓取文件的正确方法是什么?
在下载文件中说明
根据您想要执行的下载类型-文件,Google文档或内容链接-您将使用以下url之一:
- 下载文件- files。获取
alt=media
文件资源- 下载并导出Google Doc - files.export
- 链接用户到文件- webContentLink从文件资源
下载文件要求用户至少具有读访问权限。另外,你的应用必须被授权一个允许读取文件内容的作用域。
查看日志输出:需要两个因素认证才能允许从您的应用程序访问您的google drive帐户
在日志中你会看到需要的信息:link和secret_key。
tail -f log/*.log
我刚刚意识到下载的mime类型与文件元数据不同。请查看此url以获取可用的mime类型:https://developers.google.com/drive/api/v3/integrate-open
例如mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'