我正在尝试授权我的应用程序与Google云端硬盘集成.谷歌文档提供了基于服务器的授权和代码示例细节的各种服务器技术.
还有一个JavaScript Google API库,它支持授权.在维基的示例部分中,有一个用于创建配置和调用授权功能的代码片段.我已将范围改为我认为驱动所需的范围:
var config = {
'client_id': 'my_client_ID',
'scope': 'https://www.googleapis.com/auth/drive.file'
};
gapi.auth.authorize(config, function() {
console.log(gapi.auth);
});
Run Code Online (Sandbox Code Playgroud)
永远不会调用回调函数(是的,已加载Google API库)查看Java Retrieve和使用OAuth 2.0凭据示例,客户端机密似乎是一个参数,如果进入配置?
有没有人在JS,Drive或其他Google API中试过这个?有谁知道调试这样一个问题的最佳途径,即我是否需要单步执行库并停止发牢骚?
请不要建议在服务器端进行授权,我们的应用程序完全是客户端,我不希望服务器上有任何状态(我理解这将导致令牌刷新问题).我熟悉Google控制台中的API配置,我相信它和驱动器SDK设置是正确的.
是否有适用于Google云端硬盘的C或C++ API?
我查看了Google API开发人员网站,但在那里我只能找到适用于Java,PHP,Ruby,Python和C#的API.
我想开发一个简单的C/C++命令行二进制文件,以将本地文件夹同步到远程文件夹.
是否有任何桌面应用程序的代码示例如何授权Google Drive服务并上传文件?
目前我有:
var parameters = new OAuth2Parameters
{
ClientId = ClientCredentials.ClientId,
ClientSecret = ClientCredentials.ClientSecret,
RedirectUri = ClientCredentials.RedirectUris[0],
Scope = ClientCredentials.GetScopes()
};
string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
// Open url, click to allow and copy secret code
parameters.AccessCode = secretCodeFromBrowser;
OAuthUtil.GetAccessToken(parameters);
string accessToken = parameters.AccessToken;
// So, there is the access token
Run Code Online (Sandbox Code Playgroud)
但接下来的步骤是什么?正如我从示例中看到的,我应该获得IAuthenticator实例并将其传递给DriveService类的构造函数...如何获取IAuthenticator的实例?如果我的上述代码是正确的...提前谢谢.
如果您想允许用户将您网站上的文件保存到 Google 云端硬盘,这非常简单。只需使用“保存到驱动器”按钮,几行代码即可处理所有事情。伟大的。
我希望我的网站具有这种行为。但是,我想在那里保存用户生成的文本,而不是服务器上的静态文件。我在 JavaScript 变量中有文本,但似乎无法使用简单的“保存到驱动器”按钮。文档指出“数据 URI ...不受支持”,我的测试表明对象 URL类似地不受支持(这个人发现了同样的事情)。
我知道,理论上,应该可以使用 Google Drive API 来做我想做的事情。这个问题和这个问题提供了一些关于它如何工作的提示,但这一切看起来都非常复杂(甚至没有人制作一个演示来证明它确实有效,AFAICT)。
我不想处理用户登录、会话、API 密钥、授权、权限、让用户在 Google Drive 中“安装”我的应用程序等。我只想要一个按钮,有人可以按下来存储来自 JS 的一些文本新文档中的变量。“保存到驱动器”按钮的具体工作原理。这是否可行?
这不仅关系到我的复杂性,也关系到我的用户的复杂性。我想为他们提供一个非常简单、独立的功能。我不希望我的应用程序与 Google 云端硬盘紧密相连。
我尝试如下.但该文件将转到根目录(My-Drive).
var metadata = {
'title': fileData.fileName,
'mimeType': contentType,
'parents':["0B6NmmF3ovpsbExuOEc1R2JzSFEp"] // It is one of my folder's id.
};
var base64Data = btoa(reader.result);
var multipartRequestBody =
delimiter +
'Content-Type: application/json\r\n\r\n' +
JSON.stringify(metadata) +
delimiter +
'Content-Type: ' + contentType + '\r\n' +
'Content-Transfer-Encoding: base64\r\n' +
'\r\n' +
base64Data +
close_delim;
var request = gapi.client.request({
'path': '/upload/drive/v2/files',
'method': 'POST',
'params': {'uploadType': 'multipart'},
'headers': {
'Content-Type': 'multipart/mixed; boundary="' + boundary + '"'
},
'body': multipartRequestBody});
request.execute(callback);
Run Code Online (Sandbox Code Playgroud) 我正在创建一个使用Google Drive API的Google Chrome扩展程序。我必须使用HTML5上传文件。
对于文本文件,没有问题。但是,当我要上传二进制文件时,总会出现错误。
因此,当我使用HTML5中的FileReader作为BinaryString上载文件时,我的图像已损坏,我无法读取它。
当我使用Base64编码(主体部分的标题为“ Content-Transfer-Encoding:base64”)时,我遇到了400错误的请求->格式错误的多部分主体。
你能帮我吗 ?谢谢 :)
PS:我不想使用Google Drive SDK,我更喜欢编写所有代码。
var bb, reader;
var meta = {
"title": "mozilla.png",
"mimeType": "image/png",
"description": "Mozilla Official logo"
};
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://developer.mozilla.org/media/img/mdn-logo-sm.png', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e){
if(this.status == 200){
bb = new WebKitBlobBuilder();
bb.append(this.response);
console.log('Download OK');
reader = new FileReader();
reader.readAsDataURL(bb.getBlob('image/png'));
reader.onloadend = function(e){
console.log('Reader OK');
var bound = 287032396531387;
var parts = [];
parts.push('--' + bound);
parts.push('Content-Type: application/json');
parts.push('');
parts.push(JSON.stringify(meta));
parts.push('--' …Run Code Online (Sandbox Code Playgroud)