Использование функции «Вход через Facebook» с существующими системами входа

В приложениях могут применяться две системы входа: индивидуально настроенный механизм и «Вход через Facebook». В этом руководстве рассмотрены несколько подобных сценариев и даны советы по обработке действий человека в таких приложениях.

Обзор

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

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

Помимо этих сценариев приложение может обрабатывать более сложные ситуации:

  • Человек регистрируется в приложении, указав эл. адрес и пароль, а потом использует «Вход через Facebook», чтобы получить данные своего аккаунта Facebook и, например, разместить публикацию в своей Хронике или просто в дальнейшем пользоваться для входа аккаунтом Facebook.
  • Человек регистрируется в приложении, используя свой эл. адрес и пароль, но позже выбирает отдельный «Вход через Facebook». В этом руководстве подразумевается, что первый предоставленный эл. адрес совпадает с основным эл. адресом, связанным с аккаунтом Facebook.
  • Человек регистрируется в приложении с помощью «Входа через Facebook», но затем предпочитает входить в этот аккаунт, используя эл. адрес и пароль.

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

Связывание «Входа через Facebook» с уже зарегистрированным аккаунтом

В этом разделе рассматривается случай, когда человек использует для создания аккаунта индивидуально настроенную систему входа в приложение. Затем человек связывает свой аккаунт Facebook с этим аккаунтом (не выходя из него). Например, человек может зарегистрироваться на сайте Spotify, указав эл. адрес и пароль, и позднее связать свой аккаунт с аккаунтом Facebook, используя «Вход через Facebook», например, чтобы опубликовать в своей Хронике подборку прослушанной музыки.

1. Добавление «Входа через Facebook» в приложение

Чтобы выполнить этот шаг, изучите наше руководство по использованию «Входа через Facebook» в приложении. В примере с сайтом Spotify человеку предлагается использовать функцию «Вход через Facebook», если он решит опубликовать свою подборку прослушанной музыки. Либо вы можете явным образом предложить ему связать его аккаунт с аккаунтом Facebook.

2. Обработка объединения аккаунтов

Если человек вошел в приложение с помощью индивидуальной системы входа, а затем выполнил «Вход через Facebook», у приложения окажется два набора важной информации, которые нужно объединить:

  • Аккаунт, созданный приложением.
  • Информация от Facebook, подтверждающая аккаунт Facebook этого человека.

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

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

Если позднее тот же человек захочет войти в приложение, вы сопоставите информацию, сохраненную в базе данных, и обеспечите ему удобный вход независимо от выбранного метода.

Объединение отдельно созданных аккаунтов с «Входом через Facebook»

В этом случае человек входит в приложение, используя собственные учетные данные, например эл. адрес и пароль. Затем человек выходит из приложения, а позже использует для возврата «Вход через Facebook». Теперь в приложении имеются два аккаунта для одного и того же человека: один, созданный системой входа приложения, и второй, созданный в процессе «Входа через Facebook». Ради удобства пользователя приложение должно объединить эти аккаунты в один.

В этом руководстве подразумевается, что с каждым созданным в приложении аккаунтом связан эл. адрес. Однако человек может указать для аккаунта в приложении не тот эл. адрес, который связан с аккаунтом Facebook. В этом случае приложение должно прямо предложить объединить аккаунты и позволить человеку выбрать вручную два аккаунта для объединения.
Если используются индивидуально настроенные аккаунты, в которых не сохраняется эл. адрес, то человек тем более должен иметь возможность вручную указать объединяемые аккаунты.

1. Изменение процесса «Входа через Facebook» для запроса разрешений эл. почты

Если индивидуально настроенная система входа в приложении использует эл. адрес, чтобы уникально идентифицировать каждый аккаунт, необходимо при использовании функции «Вход через Facebook» запросить эл. адрес человека (используя разрешение email). Чтобы узнать, как это сделать, изучите наше руководство по запросу разрешений.

2. Объединение аккаунта «Входа через Facebook» и аккаунта приложения

После успешного входа с помощью Facebook приложение получит следующие данные о человеке: эл. адрес, ID на Facebook и маркер доступа. Ваше приложение должно найти существующий аккаунт с тем же эл. адресом. Если он есть, вы должны объединить два аккаунта и добавить информацию Facebook в существующий аккаунт, как рекомендовано выше.

На этом этапе вы должны обеспечить человеку обычную процедуру входа в приложение.

Если в базе данных не существует записи с таким эл. адресом, вы должны рассматривать этого человека как нового пользователя.

Добавление информации об аккаунте, созданном вручную, в аккаунт, созданный в результате «Входа через Facebook»

Здесь описывается ситуация, когда человек создает аккаунт в приложении с помощью «Входа через Facebook», а затем входит в приложение, указав уникальные учетные данные и пароль. Например, на сайте Netflix есть веб-приложение, которое использует «Вход через Facebook» вместе с обычной системой входа, и приложение Xbox 360, в котором используется только обычная система входа.

1. Обеспечьте проверку эл. адреса для «Входа через Facebook»

Если эл. адрес используется как уникальный идентификатор аккаунта, ваше приложение должно убедиться, что эл. адрес, связанный с аккаунтом Facebook этого же человека (и полученный при входе через Facebook), действителен. Для этого можно создать в приложении код, отправляющий проверочное эл. письмо по адресу, полученному после входа через Facebook (скорее всего, вам все равно придется включить этот шаг в обычную систему входа).

2. Попросите предоставить новый пароль (и другие учетные данные)

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

Если система входа приложения использует в качестве идентификатора не эл. адрес, а заданную пользователем строку, например имя пользователя, то необходимо также запросить этот идентификатор одновременно с паролем.

Пользователю нужно дать возможность разорвать связь между аккаунтом Facebook и учетной записью. Для этого нужно просто удалить из базы данных аккаунтов таблицу с учетными данными Facebook этого человека.