Как работает выход из системы в Facebook SDK Android - PullRequest
10 голосов
/ 10 января 2012

Я немного озадачен тем, как работает facebook.logout (context).

Поскольку даже после выхода из системы я могу получить доступ к информации, для которой требуется auth_token.Так как это вообще возможно?Я натолкнулся на эту тему, которая немного смутила меня: https://stackoverflow.com/a/6597688/487940

После прочтения этого ответа у меня возник вопрос: так что если пользователь предоставит доступ к [моему] приложению, он всегда будет аутентифицирован, еслион зашел в [официальное] приложение фейсбука?Даже если я попытаюсь вызвать facebook.logout (context) в [моем] приложении, он войдет в систему, и мое приложение сможет совершать звонки в Facebook API? '

Извините, я нев состоянии понять это поведение.

ОБНОВЛЕНИЕ: После прочтения ответа Торида я запутался в функции facebook.logout ().Какова цель этой функции, если она не выходит из системы?Потому что я больше не вижу смысла называть эту цель.Пользователь не выходит из системы.

1 Ответ

8 голосов
/ 10 января 2012

Здесь происходят две независимые вещи: 1) прошел ли ваш пользователь аутентификацию вашего приложения (с разрешениями) на Facebook и 2) зарегистрирован ли ваш пользователь на Facebook.

Аутентификация требуется при первом использовании вашего приложения пользователем и длится до тех пор, пока пользователь не выполнит явную де-аутентификацию (например, через настройки учетной записи в сети Facebook -> Приложения -> Настройки приложения).

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

Если вы используете SSO, когда вы выходите из системы, это не имеет никакого эффекта, так как для реального выхода из системы потребуется выйти из приложения Facebook - что может не понравиться пользователю!

Вы можете обойти это поведениевыполнив авторизацию в форме

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener());

, которая избегает единого входа и вызывает диалог входа в систему.Конечно, это вынуждает вашего пользователя входить в систему каждый раз, когда вы запускаете свое приложение - если вы не сохраните данные для входа / токен доступа под обложками (что и делает SDK - проверьте источник).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...