【问题标题】:I got 404 Error from Google API's via servlet in GAE, but got correct response via browser我通过 GAME 中的 servlet 从 Google API 收到 404 错误,但通过浏览器得到正确响应
【发布时间】:2015-03-12 09:09:13
【问题描述】:

我可以通过网络浏览器从 Google API 获得正确的响应。据说, 当我访问 https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXX 通过一些网络浏览器,然后得到正确的响应,如

{
 "kind": "blogger#blog",
 "id": "4871538073781423026",
 "name": "SoffeeShop",
 "description": "",
 "published": "2012-10-24T23:55:32+09:00",
 "updated": "2015-03-04T14:31:00+09:00",
 "url": "http://soffeeshop.blogspot.com/",
 "selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026",
 "posts": {
  "totalItems": 58,
  "selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/posts"
 },
 "pages": {
  "totalItems": 0,
  "selfLink": "https://www.googleapis.com/blogger/v3/blogs/4871538073781423026/pages"
 },
 "locale": {
  "language": "en",
  "country": "",
  "variant": ""
 }
}

虽然,当我在 GAE 中使用 servlet 进行 REST 时,就像

URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026?access_token=XXXXXXXXX");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");

或

URL url = new URL("https://www.googleapis.com/blogger/v3/blogs/4871538073781423026);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + access_token); 
connection.setRequestProperty("X-Appengine-Inbound-Appid", "XXXXX");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Host", "googleapis.com");

我刚刚收到“404 Not Found”错误。

我可以在 GAE 的同一个 servlet 中使用同一个 HttpURLConnection 获得 OAuth2 的 access_token,我不能只访问 Google API。所以,这意味着 Http Connections 可以很好地访问其他服务器,但看起来 Google API 拒绝来自 GAE 中的 servlet 的访问。

如何在 GAE 中通过 servlet 访问 Google API 或 Blogger API?请帮帮我。

【问题讨论】:

  • 最后,使用 Blogger API V.3,我可以访问 Blogger API,尽管我仍然不知道为什么我不能使用 HttpURLConnection。非常感谢你回答我:-)
  • 您还需要在您的 URL 中提供 API 密钥,即googleapis.com/blogger/v3/blogs/2399953?key=YOUR-API-KEY。公共博客无需提供授权标头

标签: google-app-engine servlets google-api


【解决方案1】:

您可能需要从 Google 开发者控制台在您的 GAE 项目中启用 Blogger API,它可能会问您一些问题,例如“您希望如何使用 Blogger API?”。

【讨论】:

  • 感谢您的回答 :-) 但是我已经设置了博客 API 启用,所以我已经可以通过浏览器使用它了。
【解决方案2】:

您是否向 GAE 应用提供了访问 Blogger API 的权限。我认为当您在应用程序的开发人员控制台中生成 clientId 时,您必须在重定向 URIS 中提供应用程序的名称为http://app-id.appspot.com。我想它会解决你的问题。

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 2011-04-21
    • 2018-01-01
    相关资源
    最近更新 更多