Intereting Posts
Как преобразовать файл в Base64? Захват кадры предварительного просмотра Camera2 возвращает пустой буфер CollapsingToolbar не работает с не очень высоким содержанием контента Как я могу отобразить вложенные списки элементов в Xamarin Forms? Возможно ли создать такой вид пользовательского вида в Android? Как создать массив объектов с помощью Loop в Android Как получить ширину и высоту отображаемого изображения в android? Android TabLayout не будет выравниваться сразу после возобновления активности Каково определение спящего для устройства Android? Android: вызов нестатических методов из статического класса Handler Android: java.lang.NullPointerException: попытка вызвать виртуальный метод «java.lang.String java.lang.Object.toString ()» в ссылке на нулевой объект Как создать эмулятор Android в командной строке с параметрами? Как удалить фон (обычного) вида (Android) Создайте RecyclerView с горизонтальной и вертикальной прокруткой Proguard greyed в определенных конфигурациях сборки

Аутентификация моего «приложения» к облачным конечным точкам Google, а не «пользователь»,

То, что я пытаюсь сделать, – это аутентифицировать приложение для Android в облачной конечной точке Google. В основном конечные точки должны позволять моему Android-приложению получать доступ к методам и ничего больше.

Я сделал это –

  1. Создайте идентификатор клиента, используя значение SHA1 в Eclipse в Google Cloud Console.

  2. Создайте идентификатор веб-клиента в Google Cloud Console для моего проекта конечной точки.

  3. Добавьте оба этих идентификатора клиента в «@Api», упомянутых на каждой конечной точке.

  4. Добавьте дополнительный «пользовательский» параметр в методах конечных точек.

  5. Восстановите и разверните бэкэнд в облаке.

Но когда я запускаю это, «пользователь» всегда приходит как «null». Я нахожусь на своем пути, пытаясь найти правильный рабочий метод для всего этого.

Я искал много форумов, но никаких правильных ответов нигде.

Вот еще одно подобное сообщение. Ограничьте доступ к конечным точкам Google Cloud для Android-приложения.

Это ссылка, которую я использую – https://developers.google.com/appengine/docs/java/endpoints/auth

Кто-нибудь здесь делал это раньше? Моя основная цель – не разрешать не прошедшим проверку подлинности приложения и внешний мир получать доступ к конечным точкам по очевидным соображениям безопасности. Я не хочу использовать аутентификацию на основе конечного пользователя, так как хочу, чтобы приложение было очень простым.

Похоже, он работает по назначению. Вы контролируете, какие клиентские приложения могут вызывать методы вашей конечной точки через идентификаторы клиентов, как вы уже делали. Пользовательский параметр вводится как null, потому что вы не выполняете аутентификацию конечного пользователя. Пользовательский параметр представляет фактического реального пользователя (учетную запись Google). Поэтому, если вам не нужны методы аутентификации конечного пользователя, вы просто не можете определить параметр User или игнорировать нулевое значение. Вы сказали, что ваша проблема в том, что параметр User установлен равным null. Что вы ожидаете от этого сценария?

Вам нужно вызвать аутентификацию на клиенте, а затем, возможно, используемая вами библиотека будет «вводить» информацию пользователя.

Вот что сработало для меня:

Допустим, у вас есть ключи ниже:

static final String WEB_CLIENT_ID = "somekeyfor webclientid.apps.googleusercontent.com"; 

Static final String ANDROID_CLIENT_ID = "somekeyfor androidclientid.apps.googleusercontent.com"; Static final String ANDROID_AUDIENCE = WEB_CLIENT_ID;

Ваша авитация Api должна выглядеть так:

 @Api( name = "yourapiname", clientIds = {CloudEndpoint.WEB_CLIENT_ID,CloudEndpoint.ANDROID_CLIENT_ID}, audiences = {CloudEndpoint.ANDROID_AUDIENCE}, version = "v1", namespace = @ApiNamespace( ownerDomain = "myapp.app.com", ownerName = "myapp.app.com", packagePath = "" ) ) 

В аннотации ниже обратите внимание, как ваша аудитория является переменной -> ANDROID_AUDIENCE, которая равна WEB_CLIENT_ID.

Теперь, когда вы создаете объект googleAccountCredential, вы должны передать идентификатор веб-клиента следующим образом:

 mAccountCredentials = GoogleAccountCredential.usingAudience(getApplicationContext(),"server:client_id:" + "yourwebclientID"); 

Обратите внимание, что даже если это правильно сделано, ваш пользовательский объект в конечной точке все равно может появиться как Null, если имя учетной записи, которое вы передаете в файле mAccountCredentials.setSelectedAccountName («accontname»), не существует на устройстве. Поэтому убедитесь, что имя учетной записи, которое вы передаете, существует на устройстве Android, перейдя в -> (Настройки / Учетные записи)