2013-01-21 65 views
2

我试图从Dart使用谷歌驱动器读取基本文本文件(无需授权)。下面的代码返回一个400错误。如果API_KEY被删除,则会出现403错误。我可以将文件ID输入到Google获取文件参考页面,它会正确返回元数据。使用Dart简单Google Drive访问

任何想法都会很棒。谢谢

final url = "https://www.googleapis.com/drive/v2/files/FILE?key={API_KEY}"; 

    var request = new HttpRequest(); 

    request.on.loadEnd.add((Event e) 
    { 
    if (request.status == 200) 
    { 
     var data = JSON.parse(request.responseText); 
     query("#file").text = data; 
    } 
    else 
    { 
     query("#file").text = "Error ${request.status}: ${request.statusText}"; 
    } 
    }); 

    request.open("GET", url); 
    request.send(); 

回答

6

最好的办法是使用drive_v2_api_client。

这可以通过以下设置与DartEditor

设置你的谷歌API的控制台本地主机测试
Redirect URIs: http://127.0.0.1:3030/oauth2callback 
JavaScript origins: http://127.0.0.1:3030 

然后通过将以下depenencies在pubspec.yaml文件中使用飞镖驱动包drive_v2_api_client来完成。

dependencies: 
    drive_v2_api_client: 
    git: git://github.com/Scarygami/dart_drive_v2_api_client.git 

本示例允许客户端在客户端使用客户端ID进行身份验证后获取fileid。

import 'dart:html'; 
import 'dart:json'; 
import "package:drive_v2_api_client/drive_v2_api_client.dart" as drivelib; 
import "package:google_oauth2_client/google_oauth2_client.dart"; 

final CLIENT_ID = "<YOUR CLIENT ID FROM CONSOLE API>"; 
final SCOPES = [drivelib.Drive.DRIVE_FILE_SCOPE]; 

void main() { 
    var fileid = "1B_cGCNFjnK3dDriTMLsSS_zExfGFkQeewb3dcP4xSPg"; 
    var auth = new OAuth2(CLIENT_ID, SCOPES); 
    var drive = new drivelib.Drive(auth); 
    drive.makeAuthRequests = true; 
    var loginButton = query("#login"); 
    var output = query("#text"); 

    loginButton.on.click.add((Event e) { 
    auth.login().then((token) { 
     output.appendHtml("Got Token ${token.type} ${token.data}<br><br>"); 

     drive.files.get(fileid) 
     ..then((data) { 
     output.appendHtml(data.toString()); 
     }); 

    }); 
    }); 
} 

你可以找到所有的源代码在这里工作的例子https://gist.github.com/4588427

+0

什么是“客户端ID FROM CONSOLE API”? – citykid

+0

它来自谷歌apis控制台https://code.google.com/apis/console/ –

相关问题