Да, Oauth очень безопасен.Многие приложения полагаются на него, и нет известных способов его использования.
Один из способов сделать это - сохранить идентификаторы пользователей Facebook, чтобы, когда они вернутся, вы могли видеть, чтоих идентификатор уже существует в ваших записях, и вы знаете, что это возвращающийся пользователь.Их сеанс может отличаться (например, истек с момента последнего посещения), поэтому вы не хотите хранить их токен доступа;но их идентификатор пользователя в Facebook всегда одинаков.
Как я в основном интегрировал регистрацию / вход в Facebook на своем сайте, я добавил столбец facebook_id в таблицу пользователей и "Зарегистрироваться в Facebook"кнопка.Если пользователь нажимает кнопку аутентификации с помощью Facebook, и я возвращаюсь к сеансу, а пользователь новый, я перенаправляю на страницу регистрации, заполняю как можно больше полей данными из Facebook (например, их именем) и добавляю идентификатор Facebook какскрытое поле ввода.Поэтому, когда они регистрируются, их facebook_id будет заполнен в базе данных.Это та же страница регистрации, что и у стандартной, поэтому единственное отличие от пользователя, не являющегося Facebook, состоит в том, что поле facebook_id будет пустым.Если вы хотите, вы также можете не требовать пароль для пользователей Facebook.
Чтобы пользователь мог войти в систему, пользователь просто нажал кнопку «Войти через Facebook» и аутентифицировался в Facebook.После того, как Facebook дает мне сеанс, я регистрируюсь как любой пользователь с идентификатором facebook_id в сеансе Facebook.Поскольку вы беспокоитесь о безопасности, отмечу, что этот сеанс невозможно подделать, поскольку он подписан секретным ключом приложения, который знают только вы и Facebook.Если вы используете SDK Facebook (что вам и нужно), вам не нужно беспокоиться о подписании и проверке подписи.Тот факт, что вы можете прочитать согласованную информацию из сеанса, означает, что SDK Facebook проверил ее.
Эта страница Facebook является отличным руководством по интеграции регистрации с Facebook.