IOS SDK Facebook SSO — Пользователь выходит из Facebook из внешнего приложения?

#iphone #ios #facebook

#iPhone #iOS #Facebook

Вопрос:

Инструкции по использованию единого входа (SSO) с Facebook IOS SDK заключаются в том, чтобы сохранить токен доступа и дату истечения срока действия в fbDidLogin и использовать их при последующих вызовах, чтобы избежать ненужных входов в систему.

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

Есть какой-нибудь способ обойти это?

Ответ №1:

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

Не уверен, почему вас это беспокоит. Как правило, вы хотели бы, чтобы ваши пользователи оставались в системе. Если у вас есть причина, по которой вы этого не хотите, не запрашивайте разрешение «offline_access» при авторизации пользователя FB, и вы также можете выйти из системы и отменить авторизацию пользователя через FB API на основе любых критериев, которые вы считаете подходящими.

Комментарии:

1. Спасибо за ваш ответ. Дело в том, что я не уверен, что «я бы хотел, чтобы мои пользователи оставались в системе». Это решать не мне, это зависит от пользователя. Я считаю, что если пользователь вышел из Facebook в любом месте на устройстве, он или она не сможет получить доступ к Facebook из любого места на этом устройстве, пока он или она не войдет в систему снова. Я попробую удалить offline_access и посмотрю, поможет ли это.

2. вы думаете об этом неправильно. концептуально, когда пользователь входит в ваше приложение (любым способом, включая FB), он входит только в ваше приложение. Например, если пользователь вошел в ваше приложение через FB, а затем перешел на facebook.com ожидают ли они входа в систему? конечно, нет. аналогично, если они выйдут из вашего приложения, будут ли они ожидать выхода из facebook.com . Нет. например, это зависит от пользователя. они будут входить / выходить из вашего приложения по своему усмотрению. это не влияет на другие входы в систему, которые они выполняли с помощью других приложений / сайтов.

3. Обычно пользователь вообще не входит в мое приложение. Он уже вошел в систему с помощью приложения Facebook или, возможно, какого-либо другого приложения с поддержкой Facebook. В этом вся идея единого входа. Если пользователь случайно заходит на FB из моего приложения (что означает, что мое приложение было первым, кто использовал FB), а затем переходит к facebook.com он или она ДОЛЖНЫ войти в систему. В противном случае нет смысла использовать единый вход.

4. Суть единого входа в систему заключается в том, чтобы позволить вам аутентифицировать пользователя с помощью существующих учетных данных (например, FB) без необходимости вводить имя пользователя / pwd. Они по-прежнему входят в систему явно, разрешая единому входу работать при первой авторизации вашего приложения для этого. Эта аутентификация зависит от приложения и может быть отозвана пользователем в любое время. Таким образом, IMHO должно быть приложением bet, а не универсальным. Единый вход был бы отстойным, если бы выход из одного приложения выводил меня из всего. Если пользователь хочет глобально отозвать все авторизации, он может сделать это через настройки конфиденциальности FB.

5. означало «ИМХО, это должно быть для каждого приложения» выше.