gpt4 book ai didi

javascript - Chrome 应用程序可以直接访问 Google API(如云端硬盘)吗(即没有 WebView )?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:04 24 4
gpt4 key购买 nike

我正在写一个 Chrome App我想使用 Google Drive API让我的用户将文件读/写到他们自己的 Google Drive。

我发现信息表明,从 Chrome 应用程序通过 OAuth 流程的唯一方法是使用 WebView (请参阅之前的 StackOverflow 问题 Google Drive Realtime API in a Chrome Packaged App)。

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

但是一旦您拥有 OAuth 访问 token ,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 和主应用程序之间传递消息,这听起来很痛苦。

有什么解决办法吗?或者我是否必须通过 WebView 将所有数据传输到 API 或从 API 传输数据? :(

最佳答案

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

换句话说,您可以直接访问 Google API,无需处理 OAuth 的复杂性,当然也无需使用 WebView 。

在您的 manifest.json 中,您需要这样的东西:

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

关于javascript - Chrome 应用程序可以直接访问 Google API(如云端硬盘)吗(即没有 WebView )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com