如何以程序化的方式上传一个文件到 google drive?

请问在titanium Appcelerator中使用javascript如何从程序的本地存储目录中上传一个文件到google drive?
我使用的下面的代码,但是不能上传文件。

 var ggParams = {
clientId: '662194379016.apps.googleusercontent.com',
clientSecret: 'ffRSIWBlXyPwW-M1iQ6DNtXZ',
redirectUri: 'http://localhost', //urn:ietf:wg:oauth:2.0:oob  
devKey: 'AIzaSyBmXhfsc--2CdlSU8UD37Ryyd3qYaUxKls',
};
// Initialize Youtube Service
 var google = new Google(ggParams);
 google.login(function(e){
Ti.API.info('Token: ' + google.accessToken());
}); 
/* google.refreshToken(function(e){
    Ti.API.info('New Token: ' + e.token);

});*/  

 /*var params = {
    call: 'userinfo',
    method: 'GET',
    params: {
        client_id: '662194379016.apps.googleusercontent.com',
        client_secret: 'ffRSIWBlXyPwW-M1iQ6DNtXZ',
        redirect_uri: 'http://localhost', //urn:ietf:wg:oauth:2.0:oob  
        devKey: 'AIzaSyBmXhfsc--2CdlSU8UD37Ryyd3qYaUxKls',
        code:''
        }
};*/
google.callMethod( 
 args = {
    call: 'drive',  //token
    method: 'GET', //POST
    params: {
        clientId: '662194379016.apps.googleusercontent.com',
        clientSecret: 'ffRSIWBlXyPwW-M1iQ6DNtXZ',
        redirectUri: 'http://localhost', //urn:ietf:wg:oauth:2.0:oob  
        devKey: 'AIzaSyBmXhfsc--2CdlSU8UD37Ryyd3qYaUxKls',
         code: 200
        }
},
function(e){

    if (e.success){
        callback(e.data);
        Ti.API.info(e.data);
    }
    else{
        Ti.API.info(e.data);
        Ti.API.error('Error getting tokens');

    }
}, false); //true or false or null

该回答引用ChatGPT

您可以使用Google Drive API和Google OAuth 2.0认证来实现这个功能。


您已经设置了客户端ID、客户端密頁、重定向URI和开发人员密頁,但是您需要使用Google Drive API接口来上传文件。


可以使用以下代码来上传文件:

var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'file.txt');

var xhr = Ti.Network.createHTTPClient({
  onload: function(e) {
    var response = JSON.parse(this.responseText);
    Ti.API.info('Uploaded with ID: ' + response.id);
  },
  onerror: function(e) {
    Ti.API.error('Upload error: ' + e.error);
  }
});

xhr.open('POST', 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart');
xhr.setRequestHeader('Authorization', 'Bearer ' + google.accessToken());
xhr.setRequestHeader('Content-Type', 'multipart/related; boundary="' + boundary + '"');

xhr.send({
  'name': file.name,
  'data': file.read(),
  'mimeType': file.mimeType
});

请注意,您需要在上传之前先使用Google OAuth 2.0认证登录,并在发送请求时将访问令牌添加到请求标头中。


请确保您在Google Cloud Console中已经启用了Google Drive API。