У меня есть приложение для Android, которое имеет доступ к набору API через Google Endpoints. Проблема в том, что те же API-интерфейсы доступны из Интернета через https://your-app-id.appspot.com/_ah/api/explorer, и я не хочу, чтобы это произошло. То есть, я хочу, чтобы хранилище данных было доступно (и изменяемо) только с мобильных устройств. Есть ли простой способ сделать это? Я взглянул на аутентификацию enpoint и не полностью понял это (я все еще новичок во всем этом ...), поэтому я подумал, был ли более простой ответ на эту (по-видимому) простую проблему.Как сделать конечные точки google недоступными из Интернета?
ответ
В настоящее время нет способа изменить тот факт, что ваши конечные точки общедоступны из Интернета (и т. Д.).
Однако вы можете реализовать аутентификацию, чтобы убедиться, что они используются только вашими клиентами (будь то мобильные или интернет). Вы можете выполнить аутентификацию с учетной записью Google на клиентском устройстве или просто проверить подлинность своего приложения.
документация для этого здесь: https://developers.google.com/appengine/docs/java/endpoints/consume_android
Существует также некоторые здесь:
https://developers.google.com/eclipse/docs/endpoints-addauth
К сожалению, ни очень хорошо, и они сосредоточены больше на пользователей (по сравнению с приложением) аутентификации. Поэтому, если у вас есть проблемы, я также предлагаю вам искать SO с аутентификацией [[google-app-endpoints] ».
Чтобы ограничить доступ к API только написанным вами приложениям, вам потребуется реализовать аутентифицированные вызовы API.
Второй набор инструкций в README для https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-android подробно описывает, как зарегистрировать свое приложение в Службах Google Play, чтобы аутентифицировать ваше приложение и пользователей.
https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-java-maven/blob/master/src/main/java/com/google/devrel/samples/helloendpoints/Greetings.java#L50 показывает аутентифицированную реализацию метода конечных точек Cloud Endpoints. Если вызов выполняется по этому методу, который не аутентифицирован, объект User будет иметь значение NULL.