В приложениях могут применяться две системы входа: индивидуально настроенный механизм и «Вход через Facebook». В этом руководстве рассмотрены несколько подобных сценариев и даны советы по обработке действий человека в таких приложениях.
В приложении можно интегрировать индивидуальную систему входа, в которой аккаунт создается, когда человек регистрируется в приложении, указывая эл. адрес и пароль. Обычно в этом случае приложение проверяет эл. адрес для подтверждения личности.
Либо входить в приложение можно только с помощью функции «Вход через Facebook». В этом случае человек регистрируется в приложении с помощью «Входа через Facebook», для него создается аккаунт, а подтверждение личности выполняет Facebook.
Помимо этих сценариев приложение может обрабатывать более сложные ситуации:
В этом руководстве описываются лучшие, с нашей точки зрения, способы обработки таких ситуаций.
В этом разделе рассматривается случай, когда человек использует для создания аккаунта индивидуально настроенную систему входа в приложение. Затем человек связывает свой аккаунт Facebook с этим аккаунтом (не выходя из него). Например, человек может зарегистрироваться на сайте Spotify, указав эл. адрес и пароль, и позднее связать свой аккаунт с аккаунтом Facebook, используя «Вход через Facebook», например, чтобы опубликовать в своей Хронике подборку прослушанной музыки.
Чтобы выполнить этот шаг, изучите наше руководство по использованию «Входа через Facebook» в приложении. В примере с сайтом Spotify человеку предлагается использовать функцию «Вход через Facebook», если он решит опубликовать свою подборку прослушанной музыки. Либо вы можете явным образом предложить ему связать его аккаунт с аккаунтом Facebook.
Если человек вошел в приложение с помощью индивидуальной системы входа, а затем выполнил «Вход через Facebook», у приложения окажется два набора важной информации, которые нужно объединить:
В большинстве приложений исходный аккаунт будет сохранен в таблице базы данных, поэтому проще всего связать его с аккаунтом Facebook в базе данных.
Обычно для этого создается новая таблица, в которой сохраняется информация о конкретном аккаунте Facebook. Если вы создали такую таблицу, а не просто добавили столбцы в существующую таблицу аккаунтов, то в дальнейшем вы сможете быстро обеспечить поддержку других учетных записей OAuth.
Если позднее тот же человек захочет войти в приложение, вы сопоставите информацию, сохраненную в базе данных, и обеспечите ему удобный вход независимо от выбранного метода.
В этом случае человек входит в приложение, используя собственные учетные данные, например эл. адрес и пароль. Затем человек выходит из приложения, а позже использует для возврата «Вход через Facebook». Теперь в приложении имеются два аккаунта для одного и того же человека: один, созданный системой входа приложения, и второй, созданный в процессе «Входа через Facebook». Ради удобства пользователя приложение должно объединить эти аккаунты в один.
В этом руководстве подразумевается, что с каждым созданным в приложении аккаунтом связан эл. адрес. Однако человек может указать для аккаунта в приложении не тот эл. адрес, который связан с аккаунтом Facebook. В этом случае приложение должно прямо предложить объединить аккаунты и позволить человеку выбрать вручную два аккаунта для объединения.
Если используются индивидуально настроенные аккаунты, в которых не сохраняется эл. адрес, то человек тем более должен иметь возможность вручную указать объединяемые аккаунты.
Если индивидуально настроенная система входа в приложении использует эл. адрес, чтобы уникально идентифицировать каждый аккаунт, необходимо при использовании функции «Вход через Facebook» запросить эл. адрес человека (используя разрешение email
). Чтобы узнать, как это сделать, изучите наше руководство по запросу разрешений.
После успешного входа с помощью Facebook приложение получит следующие данные о человеке: эл. адрес, ID на Facebook и маркер доступа. Ваше приложение должно найти существующий аккаунт с тем же эл. адресом. Если он есть, вы должны объединить два аккаунта и добавить информацию Facebook в существующий аккаунт, как рекомендовано выше.
На этом этапе вы должны обеспечить человеку обычную процедуру входа в приложение.
Если в базе данных не существует записи с таким эл. адресом, вы должны рассматривать этого человека как нового пользователя.
Здесь описывается ситуация, когда человек создает аккаунт в приложении с помощью «Входа через Facebook», а затем входит в приложение, указав уникальные учетные данные и пароль. Например, на сайте Netflix есть веб-приложение, которое использует «Вход через Facebook» вместе с обычной системой входа, и приложение Xbox 360, в котором используется только обычная система входа.
Если эл. адрес используется как уникальный идентификатор аккаунта, ваше приложение должно убедиться, что эл. адрес, связанный с аккаунтом Facebook этого же человека (и полученный при входе через Facebook), действителен. Для этого можно создать в приложении код, отправляющий проверочное эл. письмо по адресу, полученному после входа через Facebook (скорее всего, вам все равно придется включить этот шаг в обычную систему входа).
После проверки эл. адреса вы можете запросить у пользователя пароль, указав, что в дальнейшем он будет использоваться для входа в приложение вместе с этим эл. адресом. Полученный пароль вы можете добавить в тот же раздел базы данных, в котором хранится текущая информация аккаунта.
Если система входа приложения использует в качестве идентификатора не эл. адрес, а заданную пользователем строку, например имя пользователя, то необходимо также запросить этот идентификатор одновременно с паролем.
Пользователю нужно дать возможность разорвать связь между аккаунтом Facebook и учетной записью. Для этого нужно просто удалить из базы данных аккаунтов таблицу с учетными данными Facebook этого человека.