Chrome应用程序可以访问谷歌api(如驱动器)直接(即.没有webview)
Can a Chrome App access Google APIs (like Drive) directly (ie. without a webview)?
我正在编写一个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"
]
}
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- 直接从 PHP5/JavaScript Web 应用程序打印
- 直接从 Web 应用程序中的 Outlook 拖放
- 可以'不要通过Chrome上的iFrame登录应用程序,但可以直接查看
- 直接链接到URL与路由参数打破AngularJS应用程序
- 将Ember.js仅用于Rails应用程序的一部分最直接的方法是什么
- node.js应用程序从命令提示符下运行,但不能直接运行
- 是否可以创建一个Vorpal应用程序,命令's的输出直接到达终端,而不是'它自己的外壳
- 如何使用.apk链接直接从手机下载android应用程序
- 我可以直接发送请求到一个快速应用程序,而不是通过http
- 防止直接访问Azure文件,除非通过Ember应用程序
- 通过extjs应用程序直接写入本地机器's目录上的文件,而不使用服务器
- Chrome应用程序可以访问谷歌api(如驱动器)直接(即.没有webview)
- 如何直接从windows8商店应用程序(javascript)打印pdf
- React子组件直接调用流量应用程序中的Action——这是一种糟糕的做法
- 直接在grails中的应用程序中获取angular js应用程序的数据json文件
- 直接从android应用程序访问JavaScript引擎:V8
- 当作为 Web 应用程序运行时,对象不支持 IE11 上的属性或方法“create”,在浏览器中直接打开 HTML 时很
- 代码直接打印到打印机斑马TPL在2844的一个web应用程序的客户端机器上