3

我正在使用实时 API,并且正在使用实时客户端工具。

使用现有代码,我正在使用这种方法创建实时文件:

createRealtimeFile = function(title, callback) {
  gapi.client.load('drive', 'v2', function() {
    gapi.client.drive.files.insert({
      'resource': {
        mimeType: rtclient.REALTIME_MIMETYPE,
        title: title
      }
    }).execute(callback);
  });
}

然后我试图用这个选择器打开文件:

var popupOpen = function () {
      var token = gapi.auth.getToken().access_token;
      var view = new google.picker.View(google.picker.ViewId.DOCS);
      view.setMimeTypes(rtclient.REALTIME_MIMETYPE+ "."+realTimeOptions.appId);
      var picker = new google.picker.PickerBuilder()
          .enableFeature(google.picker.Feature.NAV_HIDDEN)
          .setAppId(realTimeOptions.appId)
          .setOAuthToken(token)
          .addView(view)
          .addView(new google.picker.DocsUploadView())
          .setCallback(pickerCallback)
          .build();
      picker.setVisible(true);
    };

尽管如果我使用 setMimeTypes,则找不到任何文档。如果我删除该过滤器,我的文档会正常显示(以及驱动器中的每次文档)。我使用的 MIME 类型是默认类型:

rtclient.REALTIME_MIMETYPE = 'application/vnd.google-apps.drive-sdk';

我正在添加 appID,因为这是它在实时游乐场上的完成方式。我也试过没有“。” 或 appID 但未找到任何文档。

关于如何修复过滤器的任何建议?

4

3 回答 3

3

您应该寻找您创建的 mimeType。您使用 mimeType 创建了文件,rtclient.REALTIME_MIMETYPE并且正在使用 mimeType 查找文件rtclient.REALTIME_MIMETYPE+ "."+realTimeOptions.appId这就是您没有获得任何文件的原因。

将文件选择器代码更改为:

view.setMimeTypes(rtclient.REALTIME_MIMETYPE);

并确保你改变

rtclient.REALTIME_MIMETYPE = 'application/{{YOURE_CUSTOM_MIMETYPE}}';

以避免与其他应用程序发生冲突。

于 2013-07-28T06:14:16.817 回答
1

在安卓论坛上找到答案。我必须用这个 mimeType 创建文件:

REALTIME_MIMETYPE = 'application/vnd.google-apps.drive-sdk.'+appID;

并在视图上使用相同的 mimeType:

  view.setMimeTypes(REALTIME_MIMETYPE);
于 2013-07-30T00:46:42.800 回答
1

简短回答:更正您的 appID。它是您的 CLIENT-ID 的第一部分。也就是说,如果您的 client-id 是1088706429537-4oqhqr7o826ditbok23sll1rund1jim1.apps.googleusercontent.com,那么您的 APP_ID 是 1088706429537。我最初将它与 project-id 混淆并遇到了您的问题。

我开始了新的答案,因为所有接受的答案都是错误的,因为他们忽略了主要问题。可能他们建议将 mime 类型更改为完全自定义的东西是正确的。然而,最受欢迎的答案

您使用 mimeType rtclient.REALTIME_MIMETYPE 创建了文件,并且您正在寻找具有 mimeType rtclient.REALTIME_MIMETYPE+ "."+realTimeOptions.appId 的文件

这似乎是自然但错误的事实。主题作者正确地复制了演示。Google 演示似乎正是这样做的:他们创建 application/vnd.google-apps.drive-sdk 文件并查找 appid 扩展的文件。这实际上是正确的,因为每当您创建 REALTIME_MIMETYPE=application/vnd.google-apps.drive-sdk文件时,谷歌驱动器都会默默地修复文件类型!它使用 .APP_ID 对其进行扩展。这也意味着您不需要像其他答案所建议的那样自定义您的 mime 类型。我想你可以继续使用 application/vnd.google-apps.drive-sdk。我已经检查过:如果某些字母拼写错误,Google 甚至会修复您的 mime 类型,这使得建议的定制更加困难。只有当它与 REALTIME 类型相差太大时,Google API 才会采用另一种 mime 类型。但是我不确定这是正确的做法,尽管所有其他公认的答案都将其作为“解决方案”提出,因为我不知道这意味着什么不同。尽管如此,

为了配合,使用application/vnd.google-apps.drive-sdk而不是建议的自定义类型的原因是:

  1. 此标准类型由 Google 在实时操场演示中提出,而不是自定义类型
  2. Google 将此类型称为“REALTIME_MIMETYPE”。如果您使用不同的东西,您可以使用 Realtime API 创建非实时文件。至少不像谷歌建议的那样实时。
  3. 如果您指定不同的 MIME 类型,Google 仍会将其更正为 REALTIME_MIMETYPE。这意味着不欢迎自定义 mime 类型。
  4. 定制的支持者对此一无所知。他们甚至敢嘲笑谷歌官方的例子“荒谬”。他们基本上说我们不应该相信他们。
于 2015-01-25T06:28:09.867 回答