【发布时间】:2017-02-11 01:02:07
【问题描述】:
我想使用Google Client Library for JavaScript从本地主机(WAMP 环境)向Google FusionTables API(和其他几个 API)进行 JSON-RPC 调用
我采取的步骤:
- 在Google Developer Console 上设置项目
- 启用了 FusionTables API
- 创建了一个服务帐号并下载了 JSON 文件。
- 成功加载带有auth包的JS客户端库:
gapi.load('client:auth2', initAuth); - 通过以下3种方式构造init方法参数:
- 逐字下载的 JSON
- 已将下载的 JSON 修改为包含范围
- 只是客户端 ID 和范围
- 尝试(但失败)初始化 GoogleAuth 实例:
gapi.auth2.init(params)
基于JS client library >> Samples
gapi.auth2.init 方法调用第二个回调(我理解它是一个错误处理程序):失败(“无法启动”),但奇怪的是,我也得到了“无法登录”,这可能仅源自提供的成功处理程序。这是怎么回事?我如何让它发挥作用?
注意:我只愿意尝试 CORS/xhr,如果没有办法用 JS 客户端库来做的话。
【问题讨论】:
-
Google JavaScript 客户端库的文档中哪里说它支持服务帐户?我看到的只是公共 API 和 Oauth2。
-
我不记得曾明确看过它。但是后来,我没有读到它没有读到的任何地方,所以我只是假设它读到了;真可惜它没有。
-
如果支持某些内容,文档将说明这一点并向您展示如何使用它。否则,我们将必须有文件明确说明它不能帮助您制作比萨饼、煮热狗……或世界上任何其他它不支持的东西。
-
我的假设是基于此页面上的建议:OAuth 2.0 for Service Accounts。人们不会合理地期望客户端库直接帮助您制作比萨饼或烹饪热狗。但是,我认为期望 Google API 客户端库与 Google 的所有帐户类型兼容并不是太牵强,而且很自然地假设,除非它被明确排除。虽然这是一项伟大的工作并且非常感谢,但如果不是完全误导的话,文档也是模棱两可的。
-
考虑到 js 是客户端的,然后考虑在文件中包含服务帐户信息以供所有人查看和下载的安全后果。服务帐户和 js 不混合。 Google 不会帮助您做会成为安全噩梦的事情
标签: javascript oauth google-api google-api-js-client