Я разрабатываю приложение с возможностью использования Facebook и Google для входа в систему, а также для классического входа в систему электронной почты + пароль. Я задумываюсь о нескольких вещах, касающихся входа в сторонние API:
1. так как один пользователь может войти в свою учетную запись Facebook, а позже, решив выйти из системы и войти в свою учетную запись Google, пользователь должен быть узнан по его адресу электронной почты. Поэтому всякий раз, когда он подписывается с другой учетной записью, адрес электронной почты просматривается в базе данных, и если он найден, он присоединяет это новое значение к ранее созданной учетной записи. Просто подтвердите этот вопрос, пожалуйста.
2. Если пользователь подписывается с входом в Facebook, вы можете получить accessToken, userId, электронную почту пользователя и т.д. Какова наилучшая практика для аутентификации пользователя, чтобы он был наиболее безопасным способом? Должен ли я отправлять его facebook accessToken и адрес электронной почты непосредственно на сервер? Если сервер проверяет Facebook, если accessToken действительно существует в Facebook? Каков наилучший и наиболее безопасный способ создания токена доступа к приложениям на стороне сервера? Я слышал что-то о хеше MD5... Должен ли я использовать только этот вновь созданный токен доступа в вызовах API, а не использовать какие-либо учетные данные в facebook? Или я должен использовать учетные данные Facebook и, таким образом, сохранять их на стороне сервера/клиента? Я собираюсь использовать Java App-engine для серверной части моего приложения.
3. Что делать, если пользователь удаляет свою учетную запись на Facebook? Как приложение узнает об этом? Если он все равно знает, что делать с учетной записью?
- Должен ли я регулярно проверять токен доступа на Facebook, если он все еще действителен? Почему и как и как часто?
Я не уверен, спрашиваю ли я в нужном месте. Если я ошибаюсь, пожалуйста, перенаправляйте мне то, как я должен идти, возможно, некоторые ссылки на эти лучшие практики? До сих пор я не нашел ничего, что могло бы ответить на ВСЕ мои вопросы. Думаю, это как кодирование, так и безопасность. Спасибо за все ваши советы и трюки.