按照 Realtime-Playground 示例,我正在尝试在我的应用程序中启用“打开文件”。授权工作正常,并在 gDrive 上创建一个空文件。尽管用于创建文件选择弹出窗口的代码不起作用。以下代码是 rt-playground 的一部分,我使用的是相同的:
var popupOpen = function () {
var token = gapi.auth.getToken().access_token;
var view = new google.picker.View(google.picker.ViewId.DOCS);
view.setMimeTypes("application/vnd.google-apps.drive-sdk." + 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(openCallback)
.build();
picker.setVisible(true);
}
我还将上述功能连接到一个按钮。当我在授权之前单击按钮时,出现以下错误
TypeError: 'undefined' is not an object (evaluating 'gapi.auth.getToken')
我猜这是正确的行为。当我在授权后单击按钮时,出现以下错误:
Uncaught TypeError: Cannot read property 'View' of undefined
错误来自这行代码:
var view = new google.picker.View(google.picker.ViewId.DOCS);
在我的 index.html 页面上,我添加了 rt-playground 中使用的所有脚本,并且由于授权正在工作,我想问题不是由此引起的。对于任何反馈,我们都表示感谢。
这是我的代码(用于测试,但仍然欢迎反馈)。
Ps:我不确定我是否正确设置appID的一件事。在查看 API 控制台后,我没有找到任何这样命名的属性,所以我尝试使用项目 ID 和产品名称。
更新
通过添加 google.load('picker', '1'); 在我的 index.html 页面中它已经工作了。尽管此代码在实时游乐场中不存在,但我不确定为什么需要使用它..