Подтвердить что ты не робот

Использование Android AccountManager для аутентификации пользователей для сервера

Я пишу приложение для Android, имеющее соединение с сервером. Я хотел бы подтвердить подлинность пользователя приложения на устройстве Android и сообщить серверу об этом.

Предполагая, что пользователь имеет:

  • ввел свои учетные данные на устройстве Android для Google и Facebook (это те, кого я сейчас интересую)
  • разрешено приложению использовать сохраненные учетные данные на устройстве Android.
  • приложение приобрело детали (пользователь и токен учетной записи) с Android AccountManager успешно

Теперь я хотел бы правильно и надежно сообщить серверу, что приложение на устройстве аутентифицировало пользователя. Как сервер может подтвердить, что это не подделка? Есть ли способ проверить токен с Google и Facebook на сервере, не требуя взаимодействия с пользователем?

Спасибо.

4b9b3361

Ответ 1

вы должны взглянуть на этот вопрос: Создание серийного номера для конкретного устройства

вы можете взять имя учетной записи на основе используемой им службы, например:

AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");

но вы должны объявить его в манифесте и попросить пользователя проверить его.

Ответ 2

Хотя, может быть, неплохо использовать извлеченный токен и сохранить его, или передать его на ваш сервер, могут быть другие способы сообщить серверу, что аутентификация завершена.

Это может быть не метод заполнения, но в зависимости от вашего прецедента он может работать.

  • Интерфейс AccountManagerFuture имеет обратный вызов isDone(), в котором говорится, что теперь вы можете получить свой токен. Это, по сути, означает, что аутентификация произошла после того, как пользователь предоставил вам разрешение на использование определенной учетной записи.

  • Иначе, если вы используете AccountManagerCallback для своего кода, вы можете знать, в коде, что эта проверка подлинности произошла, сразу после попытки получить токен для учетной записи.

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

Ответ 3

Есть несколько способов сделать это, пытаясь убедиться, что это не "фиктивный". Во-первых, при первоначальной аутентификации (где вы получаете информацию об учетной записи пользователя), получите идентификатор своего устройства, а также их местоположение (не точное местоположение, но используя свой IP-адрес, вы можете получить регион). Таким образом, если кто-то пытается аутентифицироваться с ложными учетными данными, это остановит их. Я рекомендую сообщить фактическому пользователю, что кто-то пытается это сделать, отправив им электронное письмо. Вы также можете при первоначальной аутентификации установить пользовательский PIN-код или пароль, который затем сохраняется на устройстве. Отправьте хеш-версию булавки на сервер и убедитесь, что каждый раз, когда пользователь аутентифицируется.

Я мог бы полностью отключиться от того, что вы пытаетесь выполнить, поскольку описание более psuedo, чем что-либо, но я надеюсь, что это помогло