验证服务帐户以使用 JavaScript 客户端库调用 Google API
authenticating a service account to call a Google API with JavaScript client library
我想从本地主机(WAMP 环境)对 Google FusionTables API (and a couple of other APIs) using the Google Client Library for JavaScript
进行 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)
function failed(reason) {
console.log(reason);
}
gapi.load('client:auth2', initAuth);
function initAuth() {
var APIkey = 'MY API KEY';
gapi.client.setApiKey(APIkey); //I understand this to be unnecessary with authorized requests, included just for good measure
var GDTSAKey = 'MY SERVICE ACCOUNT KEY';
var scopes = 'https://www.googleapis.com/auth/fusiontables';
gapi.auth2.init({
client_id: "101397488004556049686",
scope: 'https://www.googleapis.com/auth/fusiontables'
}).then(signin, failed("couldn't initiate"));
//passing the downlaoded JSON object verbatim as parameter to init didn't work either
} //initAuth()
function signin() {
gapi.auth2.getAuthInstance().signIn().then(makeAPIcall), failed("couldn't sign-in");
}
function makeAPIcall(){
gapi.client.load('fusiontables', 'v2', function(){
var tableId = '1PSI_...';
var table = gapi.client.fusiontables.table.get(tableId);
document.querySelector("#result").innerHTML = table;
});
}
基于JS client library >> Samples
gapi.auth2.init
方法调用第二个回调(据我所知是一个错误处理程序):失败("couldn't initiate"),但奇怪的是,我也得到“无法登录” ' 这只能源自提供的成功处理程序。这是怎么回事?我如何让它工作?
注意:我只愿意尝试CORS/xhr,如果用JS客户端库不行的话
What's going on?
您正在尝试使用不支持服务帐户的 Google JavaScript 客户端库的服务帐户。
How do I get this to work?
切换到 Oauth2 身份验证,或者如果您必须使用服务帐户,则切换到服务器端语言,例如 PHP 或 python。其中支持服务帐号认证。
我想从本地主机(WAMP 环境)对 Google FusionTables API (and a couple of other APIs) using the Google Client Library for JavaScript
进行 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)
function failed(reason) { console.log(reason); } gapi.load('client:auth2', initAuth); function initAuth() { var APIkey = 'MY API KEY'; gapi.client.setApiKey(APIkey); //I understand this to be unnecessary with authorized requests, included just for good measure var GDTSAKey = 'MY SERVICE ACCOUNT KEY'; var scopes = 'https://www.googleapis.com/auth/fusiontables'; gapi.auth2.init({ client_id: "101397488004556049686", scope: 'https://www.googleapis.com/auth/fusiontables' }).then(signin, failed("couldn't initiate")); //passing the downlaoded JSON object verbatim as parameter to init didn't work either } //initAuth() function signin() { gapi.auth2.getAuthInstance().signIn().then(makeAPIcall), failed("couldn't sign-in"); } function makeAPIcall(){ gapi.client.load('fusiontables', 'v2', function(){ var tableId = '1PSI_...'; var table = gapi.client.fusiontables.table.get(tableId); document.querySelector("#result").innerHTML = table; }); }
基于JS client library >> Samples
gapi.auth2.init
方法调用第二个回调(据我所知是一个错误处理程序):失败("couldn't initiate"),但奇怪的是,我也得到“无法登录” ' 这只能源自提供的成功处理程序。这是怎么回事?我如何让它工作?
注意:我只愿意尝试CORS/xhr,如果用JS客户端库不行的话
What's going on?
您正在尝试使用不支持服务帐户的 Google JavaScript 客户端库的服务帐户。
How do I get this to work?
切换到 Oauth2 身份验证,或者如果您必须使用服务帐户,则切换到服务器端语言,例如 PHP 或 python。其中支持服务帐号认证。