node.js - Google Drive UI 集成问题:我的应用文件缺少“打开方式...”建议
问题描述
我最近推出了一个带有 Google Drive UI 集成的 Marketplace 应用程序。
我遇到了一个问题,即在预览我们的第三方快捷方式文件时,Google Drive 无法向未在其 Drive 中安装我的应用程序的用户提供“打开方式...”的建议。
Drive 使用文件的 mimeType 为与 mimeType 兼容的应用程序提供建议。因此,Google Drive 似乎无法将我在应用程序文件中设置的 mimeType 连接到其内部记录中的 mimeType。
按照文档 [1] 的说明,我在我的应用程序文件上设置的 mimeType 是application/vnd.google-apps.drive-sdk
(第三方快捷方式文件)。检查页面的 html 后,我们看到 Drive 实际上具有正确的 mimeType
<span class="a-q-Jc-wg" data-tooltip="application/vnd.google-apps.drive-sdk.6964198....." aria-label="application/vnd.google-apps.drive-sdk.6964198....." data-tooltip-align="b,c" data-tooltip-delay="500" data-tooltip-unhoverable="true">my app</span>
最后附加的这些数字(6964198 .....)构成了我的 Google Cloud 项目 ID。在检查另一个市场应用程序 Lucidchart 后,他们的 mimeType 是application/vnd.google-apps.drive-sdk.7081045131
. 如果有人与未安装 lucidchart 的其他人共享 Lucidchart 快捷方式,则在打开时,他们会收到“使用 Lucidchart 建议打开”他们的应用程序按预期工作,但我没有,并且比较第三方快捷方式文件属性显示没有不同。
通过 Drive 中的“获取详细信息”查看我们文件的属性之一表明 Google Drive 能够将 fileType 识别为我的应用程序的文件。
一旦用户安装了我的应用程序,他们就可以在预览文件时看到“打开方式...”。这给人的印象是 mimeType 设置正确并且可用于驱动,但 GDrive 在安装前没有正确使用它。
我花了很多时间试图找出可能导致此问题的原因,但我被卡住了。我三次检查了我的配置,一切似乎都按照文档 [2] 的指示正确设置。
我在这件事上向谷歌支持打开了 2 张票,我什至与他们通了电话,但最终他们说我似乎做的一切都是正确的,但他们无法进一步帮助我,并建议发布一个关于 StackOverflow 的问题......所以我在这里寻求你的帮助。
我的应用程序的后端是用 Node.js 编写的并使用googleapis:51.0.0
模块。
这是我保存文件的一段代码:
const gDrivePayload = {
requestBody: {
name: presentation.name,
mimeType: "application/vnd.google-apps.drive-sdk",
parents: [folderId],
properties: { presentationId }
}
};
if (thumbnailData) {
gDrivePayload.requestBody.contentHints = { thumbnail: { image: thumbnailData } };
}
const drive = google.drive({ version: "v3", auth: gAuthClient });
const gDriveResp = await drive.files.create(gDrivePayload);
gAuthClient
google.auth.OAuth2
是通过用户执行的 oauth2 流获得的提供用户令牌的一个实例。
thumbnailData
是 base64 编码的 jpeg 图像。
[1] https://developers.google.com/drive/api/v3/third-party-shortcuts
[2] https://developers.google.com/drive/api/v3/enable-sdk?hl=sk
解决方案
推荐阅读
- python-3.x - Python3比较,在linux上执行脚本,输出错误
- arrays - 如何使用 mongoose find 按内部数组进行过滤
- python - DjangoRestAPI - 在运行您自己的函数(如事件处理程序)时使用 ModelViewSet 执行数据库管理
- python - Python中c-struct的反向解码功能
- reactjs - 使用 TypeScript 的 React 类型中不存在属性
- node.js - 如何在量角器Node.js中获取元素的x和y坐标
- python-3.x - Nix openai python开发环境构建失败
- c# - C#编组期间的字节序列问题
- python - 在 GitHub 中获取组织的所有(超过 100 个)存储库
- istio - Istio 在为异常值检测添加配置时停止负载平衡