Google Books API'den Konum Hatası

günü tarafından yayınlandı.

Google AppEngine veya Heroku üzerindeki uygulamanızda Google Books API’a erişimde aşağıdaki hatayı almanız muhtemeldir.

Code 403: Cannot determine user location for geographically restricted operation

Hata mesajında da belirtildiği gibi kullanıcının konumu belirlenemediği için bu hata oluşmaktadır. Bunun da önüne geçmek için Google Books API clientıyla çağrı yaparken request’in header bilgilerine country parametresini de eklemeliyiz. Bu parametre Java ve .Net kütüphanelerinde public set edilebilir değildir. Bu sebeple request oluşturulurken RequestInitializer methodunda bunu eklemeliyiz.

Java için çözümüne bakabilirsiniz veya aşağıdaki örnekte olduğu gibi C# için uygulanışını görebilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class BookSearch
{
  private BooksService service;

  public BookSearch(string applicationName, string apiKey)
  {
    service = new BooksService(
    new BaseClientService.Initializer
    {
      ApplicationName = applicationName,
      ApiKey = apiKey,
      HttpClientInitializer = new GBookRequest()
    });
  }

  public async Task<IList<Volume>> Search(string search)
  {
    using (service)
    {
      var result = await service.Volumes.List(search).ExecuteAsync();
      if (result != null && result.Items != null)
      {
        return result.Items;
      }
      return null;
    }
  }
}

public class GBookRequest : IConfigurableHttpClientInitializer
{
  public void Initialize(ConfigurableHttpClient httpClient)
  {
    httpClient.DefaultRequestHeaders.Add("country", "TR");
  }
}
google books, api Hata

Yazar: Olcay Bayram

Çeşitli teknoloji firmalarında çalışmış, yurtiçi ve yurtdışı farklı sektörlerden tecrübe edinmiş, derdini iki yabancı dilde anlatabilen bir yazılım uzmanı.