如何在带有清单 V3 的 Javascript 中使用 Google Drive API?

问题描述 投票:0回答:1

很长。关闭。试图解释。有我尝试过的东西。我把它们都删除了,只留下原来的核心问题。

我正在尝试使用 V3 进行扩展。我想用它更新我的驱动器中的一些文件。我得到了客户端 ID、API 密钥、客户端密码。

感谢您的帮助。

javascript google-chrome-extension google-drive-api chrome-extension-manifest-v3 google-api-js-client
1个回答
0
投票

其实很简单。

设置云控制台并获取 Chome 应用程序的 OAuth 客户端 ID(谷歌不会告诉你这个。所以你去寻找网络应用程序并卡在那里)。添加 oauth2 密钥,添加您的客户端 ID 和您的范围(在本例中为

https://www.googleapis.com/auth/drive.file
)作为密钥,还在您的 manifest.json 文件中添加
identity
权限。

然后在你的 service worker 里面写这个。它可能有一些不相关/不必要的代码。我真的不知道它是如何工作的。

这可能有一些不足,但这是基本的想法。

const fileUpdate = async () => {
    chrome.identity.getAuthToken({
        interactive: true,
    },
    async (token) => {
        await fetch(`https://www.googleapis.com/upload/drive/v3/files/${USER_FILE_ID}`, {
            method: 'PATCH',
            headers: {
                "Authorization": `Bearer ${token}`,
                "Accept": "application/json",
                "Content-Type": "application/json"
            },
            body: text
        })
        .then((response) => {
            return response.json();
        })
        .then((data) => {
            console.log(`fileUpdate result: ${data}`);
        })
        .then((error) => {
                console.log(`fileUpdate errors: ${error}`);
        });
    });
}

谷歌它需要授权然后把你送到那里。就是这样。谷歌把你留在那里。我在那里看不到任何有用的东西。

如果您在 JavaScript 中搜索 Google Drive API,您可以找到此页面。它需要 HTML 文件并使用此禁止行

<script async defer src="https://apis.google.com/js/api.js" onload="gapiLoaded()"></script>
您不能在扩展程序中这样做。不允许。
scripting.executeScript()
之类的替代方法也行不通。至少我不能让它工作。

如果你搜索得足够多,你可以找到this。当您查看左侧菜单时,它会提示您应该使用 JavaScript Web Apps,因为它是 JavaScript。但是你不能,因为当你想要一个令牌时,它会将你重定向到登录页面。而且是你的service worker,不能去那里

如果您尝试在登录过程后更有意义的服务器端,但它有点相同。 Node.js 也不会工作,它在扩展中是不允许的。看起来你可以变通,但必须有其他方法。

很容易被别人的回答误导。喜欢我提到的页面并喜欢这里的答案或喜欢其他人提到的 CORB/CORS 错误。

实际上 Google Apps Script 是一种聪明的方式,但它必须有一个体面的方式。

© www.soinside.com 2019 - 2024. All rights reserved.