Использование Android AccountManager для аутентификации пользователей для сервера
Я пишу приложение для Android, имеющее соединение с сервером. Я хотел бы подтвердить подлинность пользователя приложения на устройстве Android и сообщить серверу об этом.
Предполагая, что пользователь имеет:
- ввел свои учетные данные на устройстве Android для Google и Facebook (это те, кого я сейчас интересую)
- разрешено приложению использовать сохраненные учетные данные на устройстве Android.
- приложение приобрело детали (пользователь и токен учетной записи) с Android
AccountManager
успешно
Теперь я хотел бы правильно и надежно сообщить серверу, что приложение на устройстве аутентифицировало пользователя. Как сервер может подтвердить, что это не подделка? Есть ли способ проверить токен с Google и Facebook на сервере, не требуя взаимодействия с пользователем?
Спасибо.
Ответы
Ответ 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, чем что-либо, но я надеюсь, что это помогло