从rails中的Google Picker API下载文件
Download file from Google Picker API in rails
我使用Google Picker API从用户的Google驱动器中选择文件。我有关于这个API返回的文件的所有元数据。但是我不知道如何在我的服务器上下载这个文件。
使用以下链接下载文件只下载了一些正确的文件,而其他文件已损坏:
"https://drive.google.com/uc?export=download&id="+fileid
我正在使用rails版本3.2
任何帮助将是非常感激的。谢谢。
你需要发送报头与GET请求:
Authorization: Bearer [token]
令牌为gapi.auth.getToken().access_token
和gapi
定义在:gapi.load('auth', {'callback': onAuthApiLoad});
我是这样做的:
获得我需要从Picker API下载的文件的文件id,然后将该文件id传递给google客户端API以获得文档的直接下载url:
gapi.client.request({
'path': '/drive/v2/files/'+file_id
'method': 'GET'
callback: function (responsejs, responsetxt){
var downloadUrl = responsejs.downloadUrl;
}
});
获得这个直接下载url后,我使用rails中的"open-uri"下载并保存文件到我的服务器上。
我想出了另一种方法。我们必须将其视为两个独立的身份验证。
在客户端打开文件选择器之前,我们可以让服务器为文件发出身份验证url。给用户读取作用域。
在用户选择文件之后,客户机将file_id发送给服务器,并将其存储在DB中,并将状态作为键。
然后客户端打开该文件。读取作用域url以获得第二次身份验证,这可能会显示一个接受/拒绝按钮,或者如果作用域已经被授予,则会显示一个无声的弹出框。
这将把授权码传回服务器。然后,服务器可以使用范围和身份验证代码(转换为请求令牌)来读取文件。
这个特殊的场景涉及到基于用户代理的应用程序和web应用程序客户机概要文件。因此,这不是标准的3条腿身份验证,而更像是两个完全独立的身份验证流。其中一个是隐式的(2条腿),另一个是3条腿(auth-code)。这种混合在一起的交互不是oauth2.0专门设计的…因此,为什么这没有被记录下来…
换句话说,每个身份验证流只能授权一个"客户端",并且只能授权一个"客户端"。我们指的是代表资源所有者发出请求的应用程序,即JS文件拾取器和服务器。
来源:https://www.rfc-editor.org/rfc/rfc6749 - page 14(客户配置文件)
- 无法使用API-node.js从Google Drive下载文件
- 如何下载我从Google Picker API中选择的文件
- Onedrive api 如何附加文件而不是下载
- 是否有一个 API 来控制火狐附加组件 SDK 中的下载
- 获取文件并从rest api下载
- 从mvc web api httpresponse生成csv,并通过angularjs接收下载
- 如何使用chrome文件系统api从chrome应用程序中的url下载图像
- 使用 API 下载文件不起作用
- 用于检测文件下载的 Chrome API
- 如何在 JavaScript 中从 API 下载和解析 JSON
- OneNote api下载图像
- 使用javascript从API下载文件
- 使用Addon SDK API下载许多文件时,Firefox UI变得没有响应
- EXTJS 4.2-通过REST API下载PDF
- 使用Media Formatters从Web API下载CSV文件
- 允许用户使用Javascript API下载由Java applet生成的文件
- 从rails中的Google Picker API下载文件
- 用Restangular请求从REST API下载一个文件
- 使用Json api下载谷歌存储媒体
- 访问控制-使用Javascript文件API下载远程文件