2

Dartを使用してGoogleドライブから基本的なテキストファイル(認証は不要)を読み込もうとしています。以下のコードは 400 エラーを返します。API_KEY が削除されると、403 エラーが発生します。ファイル ID を Google の get file 参照ページに入力すると、メタデータが正しく返されます。

どんなアイデアも素晴らしいでしょう。ありがとう

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();
4

1 に答える 1

6

最善の策は、drive_v2_api_client を使用することです。

これは、DartEditor を使用したローカルホスト テスト用の次の設定で Google コンソール API をセットアップすることで実行できます。

Redirect URIs:  http://127.0.0.1:3030/oauth2callback
JavaScript origins: http://127.0.0.1:3030

次に、pubspec.yaml ファイルに次の依存関係を追加して、dart ドライブ パッケージ drive_v2_api_client を使用します。

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

この例では、クライアントがクライアント ID で認証された後に、クライアントがファイル ID を取得できるようにします。

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

于 2013-01-21T19:27:44.577 に答える