/ / Jaki jest prawidłowy sposób dostarczenia klucza API do interfejsu API Google Cloud Endpoints 2 dla aplikacji? - Android, silnik aplikacji Google, klucz API, google-cloud-endpoints-v2

Jaki jest prawidłowy sposób dostarczenia klucza API do interfejsu API Google Cloud Endpoints 2 dla aplikacji? - Android, aparat google-app, klucz API, google-cloud-endpoints-v2

Mam interfejs API w Google Endpoints i "vewygenerował klucz API potrzebny aplikacji Android, nad którą pracuję, aby uzyskać dostęp do interfejsu API, ale nie mam pojęcia, gdzie podać klucz API podczas korzystania z wygenerowanej biblioteki klientów. Każde żądanie z aplikacji zwraca 403, aplikacja na Androida jest zabroniona "Czytałem również w SO, że powinien on być podany w nagłówku, ale najbliżej wspomnianych dokumentów Google Endpoints API jest to, że klucz API powinien być częścią adresu URL, co jednak nie wydaje się mieć znaczenia, jeśli żądanie pochodzi od klienta Androida.

Gdy klucz API zostanie usunięty z interfejsu API, dowolnyzapytanie, nawet curl, jest w stanie uzyskać oczekiwany wynik. Dowolna dokumentacja dotycząca tego, w jaki sposób należy to zrobić za pomocą przykładów kodu, również zostanie doceniona.

Edycja: Zastanawiam się również, czy sama firma Google wprowadziła ograniczenia w korzystaniu z SHA-1 androida debug.keystore w punktach końcowych.

Ps: moje wcześniejsze pytanie dotyczące tego było nieuczciwie odrzucone, a jedyna otrzymana odpowiedź dotyczyła ograniczeń krajowych, co, jestem pewien, nie ma z tym nic wspólnego. Może tym razem zmienię moje pytanie w inny sposób.

Odpowiedzi:

2 dla odpowiedzi № 1

Udało mi się uzyskać co najmniej jeden typ klucza API do pracy z interfejsem API Google Cloud Endpoints. Oto jak to zrobić:

1) "Użyteczny" klucz API został wygenerowany przez brak jakichkolwiek ograniczeń (tj. Nie aplikacja na Androida, sieć itp.). Możesz wybrać ograniczenia dla klucza podczas tworzenia go na stronie poświadczeń API.

2) Klucz "użyteczny" został przekazany do wygenerowanej biblioteki klientów za pomocą metody service..setKey (...).

To w pewnym stopniu wytworzyło to, o co chciałem;zezwalanie na połączenia z interfejsem API tylko przez osoby dzwoniące, które mogą się identyfikować. Powodem, dla którego to działa (kompletne założenia i odgadnięcie pracy od tego momentu) jest to, że wygenerowana biblioteka klienta wysyła żądanie HTTPS do interfejsu API, a zatem kontrole autoryzacji powinny być następnie wykonywane przez API (struktura punktów końcowych) w kontekście żądania HTTPS, a nie w kontekście aplikacji na Androida.

Jeśli to prawda, to bardzo mnie interesuje dowiedzieć się, w jaki sposób aplikacja dla systemu Android wykonuje "poprawne" wywołanie interfejsu API z wygenerowaną biblioteką klienta.

Aktualizacja: Zrzut ekranu i kod bieżącej konfiguracji

W Google Cloud Console -> API i usługi -> Poświadczenia wprowadź opis obrazu tutaj

Wykorzystanie klucza API w kodzie Java:

// Call to the generated client library for the API
DataCollection dataCollection =  service.getDataAPIMethod()
.setX(...)
.setY(...)
.setZ(...)
.setKey("***")
.execute();