3

从今天早上开始,我所有使用 gapi 的应用程序都关闭了。

我正在使用: https ://apis.google.com/js/client.js

与我的 Google Appengine 应用程序的端点通信,例如:

gapi.client.load('public', 'v2', function(){
    gapi.client.public.organizations().execute(function(response){ 
        console.log(response); 
    }); 
}, 'https://XXX.appspot.com/_ah/api');

截至今天,所有呼叫都以以下错误消息响应:

[{"error":{"code":404,"message":"Not Found","data":[{"domain":"global","reason":"notFound","message":"Not Found"}]},"id":"gapiRpc"}]

我的应用程序没有记录任何错误。我可以毫无错误地访问端点 API 资源管理器 (/_ah/api/explorer)。我可以毫无错误地进行 HTTP 请求调用,例如

https://XXX.appspot.com/_ah/api/public/v2/organizations

“gapi”对象加载时没有错误。我的“公共”端点也已加载,我可以使用 javascript 控制台列出所有方法。

我已将此错误报告给 Google。

还有其他人有这个问题吗?有没有人有任何快速的解决方案或解决方法?我是否可能错过了一些 Google 更新或 API 更改?

谢谢

4

2 回答 2

6

目前这似乎是 JS 客户端库的普遍问题,不仅限于 Endpoints API,而是影响所有 Google API。

https://code.google.com/p/google-api-javascript-client/issues/detail?id=136

只有真正的“解决方法”是不依赖于 JS 客户端库(过去也存在稳定性问题)并自己构建 HTTP 请求,我知道这不是一个快速的解决方案。

您还可以尝试使用gapi.client.request似乎适用于我的端点 API 之一的直接 REST 请求的方法。(同样,这不是一个快速的解决方案,但可能更好/更容易,因为您仍然可以通过客户端库进行身份验证)。

gapi.client.request({
  "path": "/public/v2/organizations",
  "root": "https://XXX.appspot.com/_ah/api"
}).execute(function (response) { 
  console.log(response); 
});

编辑:从链接问题更新

他们将回滚需要几个小时才能完成的损坏更新(尚无确切的 ETA)。

作为“快速”修复,您可以明确地将 apiVersion 添加到每个请求中(注意:B回滚后可能会更改,但现在可以使用):

var request = gapi.client.public.organizations();
request.B.apiVersion = "v2";
request.execute(function (response) {
  console.log(response);
});

编辑2:现在一切似乎都恢复正常了。

于 2014-04-08T10:39:21.627 回答
0

另一种解决方法可以通过传递发现文档 url 来完成。示例发现文档 url 是

例子 :-

window.gapi.client.load(" http://localhost:8080/_ah/api/discovery/v1/apis/[endpoint-api-name]/v1/rest ").then(() => { 你的承诺返回回调函数})

或者

window.gapi.client.load(" http://[application-id].appspot.com/_ah/api/discovery/v1/apis/[endpoint-api-name]/v1/rest ").then(( ) => { 你的承诺返回回调函数 })

于 2018-08-03T06:42:54.150 回答