对服务帐户进行身份验证,以便使用JavaScript客户端库调用Google API

authenticating a service account to call a Google API with JavaScript client library

本文关键字:JavaScript 客户端 API Google 调用 服务 身份验证      更新时间:2023-09-26

我想让JSON-RPC调用从本地主机(WAMP环境)到谷歌FusionTables API(和其他几个API)使用谷歌客户端库JavaScript

我所采取的步骤:

  1. 在Google Developer Console上设置一个项目
  2. 启用了FusionTables API
  3. 创建服务账号并下载JSON文件
  4. 用验证包gapi.load('client:auth2', initAuth);
  5. 成功加载JS客户端库
  6. 通过以下三种方式构造init方法参数:
    • 下载的JSON文件
    • 下载的JSON修改为包含
    • 范围
    • 只是客户端ID和作用域
  7. 尝试初始化GoogleAuth实例:gapi.auth2.init(params)
<>之前函数失败(reason) {console.log(原因);}gapi。负载(客户:auth2, initAuth);函数initAuth() {var APIkey = '我的API密钥';gapi.client.setApiKey (APIkey);//我理解这对于授权请求是不必要的,只是为了更好地测量var GDTSAKey = '我的服务帐户密钥';Var scope = 'https://www.googleapis.com/auth/fusiontables';gapi.auth2.init ({client_id:"101397488004556049686",范围:"https://www.googleapis.com/auth/fusiontables"})。然后(sign, failed("could 't initiate"));//将下载的JSON对象作为参数逐字传递给init也不起作用}//initAuth ()函数signin() {gapi.auth2.getAuthInstance().signIn().then(makeAPIcall), failed("无法登录");}函数makeAPIcall () {gapi.client。加载('fusiontables', 'v2', function(){var tableId = '1PSI_…';var table = gapi.client.fusiontables.table.get(tableId);document.querySelector("#")。innerHTML = table;});}之前基于JS客户端库的

gapi.auth2.init方法调用第二个回调(我理解为错误处理程序):失败("无法启动"),但是,奇怪的是,我也得到"无法登录",这只能起源于提供的成功处理程序。这是怎么呢我怎么让它工作?

注意:我只愿意尝试CORS/xhr,如果没有办法做到这一点与JS客户端库。

怎么回事?

您正在尝试使用不支持服务帐户的Google JavaScript客户端库的服务帐户。

我怎么让它工作?

切换到Oauth2身份验证,或者如果必须使用服务帐户,则切换到服务器端语言,例如PHP或python。其中支持服务帐户身份验证。