1

从 Google AppEngine 应用程序访问 Google Books API 时出现以下错误。

使用服务器应用程序的 API 密钥。

但是,如果您在 Eclipse 中本地运行应用程序,则没有问题。

{
  “代码”:403,
  “错误”:[{
    “域”:“全球”,
    "message" : "无法确定地理受限操作的用户位置。",
    “原因”:“未知位置”
  }],
  "message" : "无法确定地理受限操作的用户位置。"
}

关于此错误场景的信息不足。任何帮助表示赞赏。谢谢。

4

2 回答 2

1

以下代码使用 Google Books API 本身解决了我的问题。

///////////////////////////////////////////////////

UrlFetchTransport url = new UrlFetchTransport();

final Books books = new Books.Builder(
    url, jsonFactory, null)
    .setApplicationName(APPLICATION_NAME)
    .setGoogleClientRequestInitializer(
    new GBookRequest()).build();

List volumesList = books.volumes().list("isbn:9780199562855");      

// Execute the query.
Volumes volumes = volumesList.execute();
    if (volumes.getTotalItems() == 0 || volumes.getItems() == null) {
    log.info("No matches found in GBooks.");
    return null;
}

///////////////////////////////////////////////////

public class GBookRequest extends BooksRequestInitializer {

    private static String apiKey = "xxxxxx";

    public GBookRequest() {
    super(apiKey);
    }

    @Override
    public void initializeBooksRequest(BooksRequest  request)
    throws IOException {

    request.set("country", "US");
    }
}

///////////////////////////////////////////////////
于 2014-07-01T06:55:55.237 回答
1

那么,这可能是因为无法使用IP来定位用户。查看错误消息并在此处进行一些谷歌搜索是有意义的:

https://productforums.google.com/forum/#!topic/books-api/88Ml3YIpvLw

尝试将 &country=GB 添加到请求的末尾,或者任何 2 个字母代表您要搜索的国家/地区。(更多信息:http ://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 )

这个答案主要来自给定链接中的答案,但是它似乎有效并且需要一些寻找。我希望它有所帮助。

于 2014-06-27T20:55:11.463 回答