我构建了一个足够简单的网络应用程序,它使用 Google Books API 来检索用户提供的 ISBN 的卷信息。该应用程序使用官方 C# 库。请求通过 API 密钥进行授权。
在本地计算机上运行该应用程序时,我使用德国IP地址访问该服务,一切都很好。但是,从Microsoft Azure 访问书籍 API 时,我收到以下错误:
Google.Apis.Requests.RequestError
无法确定受地理限制的操作的用户位置。[403]
错误 [
消息[无法确定受地理限制的操作的用户位置。]
位置[ - ]
原因[未知位置]
域[全球]
]
有谁知道如何从托管在 Azure 中的 Web 应用程序访问 Google Books API Microsoft?
country=us
URL 参数为我解决了这个问题,在这个 github 项目中提到过,但当然没有记录在卷列表路由中
这个博客说你也可以使用x-forwarded-for,我没有尝试过
我不知道这是否有效。 但是您可以在请求中提供 IP 地址。 如果它不让我知道,这可能会也可能不起作用,我会删除它。
var bookService = new BooksService(new BaseClientService.Initializer()
{
ApiKey = "xxxx",
ApplicationName = "BooksService Authentication Sample",
});
var request = bookService.Bookshelves.List("user");
request.UserIp = ""; //<-- find an ip address to feed it
var result = request.Execute();
问题是谷歌通常会获取请求来自的IP地址。 我想知道为什么它无法从 Azure 发送请求的 IP 地址中获取地理位置。