Chrome应用程序可以访问谷歌api(如驱动器)直接(即.没有webview)

Can a Chrome App access Google APIs (like Drive) directly (ie. without a webview)?

本文关键字:直接 应用程序 没有 webview 驱动器 访问 谷歌 api Chrome      更新时间:2023-09-26

我正在编写一个Chrome应用程序,我想使用Google Drive API让我的用户读取/写入文件到他们自己的Google Drive。

我发现的信息表明,通过一个Chrome应用程序的OAuth流的唯一方法是使用webview(见这个以前的StackOverflow问题Google Drive Realtime API在一个Chrome打包应用程序)。

这个限制对我来说是有意义的,因为要通过OAuth流,你必须加载外部内容,并且从安全的角度来看,将其与特权Chrome应用程序代码隔离听起来很重要。

但是一旦你有了OAuth访问令牌,似乎Chrome应用程序的JavaScript应该能够直接向Google Drive API发出请求。这不是加载任何内容(即。HTML或JS)到浏览器中,它只是调用一个远程API来读取/写入数据。

但是似乎唯一支持使用Google JavaScript API的方法是远程加载它,使用如下代码:

<script src="https://apis.google.com/js/client.js"></script>

这不起作用,因为Chrome应用程序不允许加载远程内容。

和我的想法只是下载client.js,并把它放在我的本地Chrome应用程序目录不工作,因为client.js似乎假设它可以继续下载/执行更多的JavaScript作为必要的。

所以基本上,据我所知,Google JavaScript API似乎对提前下载和仅从本地文件运行抱有敌意。这听起来准确吗?如果是这样,应用程序从API获取远程数据的唯一方法是在webview和主应用程序之间传递消息,这听起来像是一个巨大的痛苦。

有解决办法吗?或者我必须隧道所有的数据到/从API通过一个webview?(

使用身份API,特别是chrome.identity.getAuthToken来获得授权。它封装了OAuth工作。然后,一旦获得授权,就可以使用Ajax执行特定的api(例如,到像https://www.googleapis.com/METHOD这样的URL,其中METHOD是方法)

换句话说,你可以直接访问Google api,而不需要处理OAuth的复杂性,当然也不需要使用webview。

在您的清单中。Json,你需要这样的东西:

"permissions": [
    "identity"
],
"oauth2": {
    "client_id": "....apps.googleusercontent.com",
    "scopes": [
        "https://www.googleapis.com/auth/drive"
    ]
}
相关文章: