Warum ist die Antwort auf gapi.client.drive.realtime.get leer?

Unten finden Sie eine Seite, die erfolgreich authentifiziert wird und anschließend versucht, mithilfe der drive.realtime.get-Methode einen JSON-Export eines vorhandenen Echtzeitdokuments auf drei Arten zu erhalten. Die Ergebnisse der console.log-Aufrufe werden in Kommentaren inline angezeigt.

Die Datei mit der ID 'EXISTING-FILE-ID' existiert und wurde mit der Echtzeit-API hinzugefügt. Ich kann die exportierten JSON-Daten in einem Browser unter abrufenhttps://www.googleapis.com/drive/v2/files/EXISTING-FILE-ID/realtime?access_token=VALID-ACCESS-TOKEN was zurückkehrt

{"appId":"CLIENT-ID","revision":10,"data":{"id":"root","type":"Map","value":{"blah":{"json":"anything"},"key":{"json":"val"},"key2":{"json":"val2"}}}}

In Chrome, Firefox und Safari ist die Antwort auf gapi.client.drive.realtime.get und gapi.client.rpcRequest jedoch immer leer:{"result":{}}.

In Chrome und Firefox besteht der Hauptteil der Antwort auf gapi.client.request aus einer Zeichenfolge, die sich teilweise ändert, wenn der Inhalt des Dokuments mit der Echtzeit-API geändert wird. Dies kann ein gezippter Inhalt sein (Antwortheader enthalten {content-encoding: "gzip"}, ich konnte ihn jedoch nicht gunzipen. Das etag im Antwortheader ändert sich auch, wenn sich das Dokument ändert.

In Safari enthält der Antworttext von gapi.client.request dieselbe Zeichenfolge wie in Chrome und Firefox (eyJH ...), aber der korrekte Inhalt des exportierten Dokuments wird im Konsolenprotokoll angezeigt, genau wie bei Verwendung von a Browserfenster mit der googleapis.com-URL.

<!DOCTYPE html><html><head>
  <script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
  <script type="text/javascript">
    var fileId = 'EXISTING-FILE-ID';
    var start = function() {
      // load apis (then call authorize)
      gapi.load('auth:client,drive-realtime', function() {
        gapi.client.load('drive', 'v2', function() {
          authorize();
        });
      });
    };
    // authorize with drive scope
    var authorize = function() {
      gapi.auth.authorize({
        'client_id': 'CLIENT-ID',
        'scope': ['https://www.googleapis.com/auth/drive',
                  'openid'],
        'immediate': true
      }, function() {
        realtimeget(fileId);
      });
    };
    // try to get realtime document export in 3 different ways
    var realtimeget = function(id) {
      gapi.client.drive.realtime.get({
        'fileId': id
      }).execute(function() {
        console.log(JSON.stringify(arguments));
        // {"0":{"result":{}},"1":"[\n {\n  \"id\": \"gapiRpc\",\n  \"result\": {}\n }\n]\n"} 
      });
      gapi.client.rpcRequest('drive.realtime.get', 'v2', {
        'fileId': id
      }).execute(function() {
        console.log(JSON.stringify(arguments));
        // {"0":{"result":{}},"1":"[\n {\n  \"id\": \"gapiRpc\",\n  \"result\": {}\n }\n]\n"} 
      });
      gapi.client.request({
        'path': '/drive/v2/files/' + id + '/realtime',
        'method': 'GET',
      }).execute(function() {
        console.log('gapi.client.request:');
        console.log(arguments[0]);
        // false
        console.log(arguments[1]);
        // {"gapiRequest":{"data":{"body":"eyJhcHBJZCI6IjEwNjY4MTY3MjA5NzQiLCJyZXZpc2lvbiI6MTAsImRhdGEiOnsiaWQiOiJyb290IiwidHlwZSI6Ik1hcCIsInZhbHVlIjp7ImJsYWgiOnsianNvbiI6ImFueXRoaW5nIn0sImtleSI6eyJqc29uIjoidmFsIn0sImtleTIiOnsianNvbiI6InZhbDIifX19fQ==","headers":{"date":"Thu, 08 Aug 2013 19:17:19 GMT","content-encoding":"gzip","x-goog-safety-encoding":"base64","server":"GSE","etag":"\"Q5ElJByAJoL0etObruYVPRipH1k/fDOlc7uypufY3ROxh-RtfV86Kmg\"","content-type":"text/plain; charset=UTF-8","cache-control":"private, max-age=0, must-revalidate, no-transform","x-goog-safety-content-type":"application/json","content-length":"183","expires":"Thu, 08 Aug 2013 19:17:19 GMT"},"status":200,"statusText":"OK"}}} 
      });
    };
  </script>
</head>
<body onload="start();"></body></html>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage