从 Google AppEngine 应用程序访问 Google Books API 时出现以下错误。
使用服务器应用程序的 API 密钥。
但是,如果您在 Eclipse 中本地运行应用程序,则没有问题。
{ “代码”:403, “错误”:[{ “域”:“全球”, "message" : "无法确定地理受限操作的用户位置。", “原因”:“未知位置” }], "message" : "无法确定地理受限操作的用户位置。" }
关于此错误场景的信息不足。任何帮助表示赞赏。谢谢。
从 Google AppEngine 应用程序访问 Google Books API 时出现以下错误。
使用服务器应用程序的 API 密钥。
但是,如果您在 Eclipse 中本地运行应用程序,则没有问题。
{ “代码”:403, “错误”:[{ “域”:“全球”, "message" : "无法确定地理受限操作的用户位置。", “原因”:“未知位置” }], "message" : "无法确定地理受限操作的用户位置。" }
关于此错误场景的信息不足。任何帮助表示赞赏。谢谢。
以下代码使用 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");
}
}
///////////////////////////////////////////////////
那么,这可能是因为无法使用IP来定位用户。查看错误消息并在此处进行一些谷歌搜索是有意义的:
https://productforums.google.com/forum/#!topic/books-api/88Ml3YIpvLw
尝试将 &country=GB 添加到请求的末尾,或者任何 2 个字母代表您要搜索的国家/地区。(更多信息:http ://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 )
这个答案主要来自给定链接中的答案,但是它似乎有效并且需要一些寻找。我希望它有所帮助。