Новый Facebook API: использование getLoginStatus для определения того, вошел ли пользователь в систему

#javascript #facebook #api

#javascript #Facebook #API

Вопрос:

Есть ли способ, используя новый Facebook API, определить, авторизован пользователь на facebook или нет, без какого-либо отношения к facebook app? Все это должно быть сделано в клиентском javascript на странице веб-сайта.

Более подробно: Согласно документации facebook, getLoginStatus обнаружит, что пользователь вошел в систему, если «пользователь вошел в систему и подключен к вашему приложению». С другой стороны, он сообщит, что пользователь вышел из системы, если «пользователь либо не вошел в Facebook, либо не авторизовал ваше приложение».

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

Более того, какие конкретные разрешения пользователь должен предоставить приложению, чтобы getLoginStatus работал, если пользователь вошел в систему? Я проверил этот список разрешений (в документации Facebook API):

http://developers.facebook.com/docs/authentication/permissions/

и не видел упоминания о каких-либо разрешениях, связанных с такого рода обнаружением.

Я впервые использую Facebook API, и это очень расстраивает. Я просмотрел Интернет, и, похоже, общий консенсус заключается в том, что вы просто не можете определить, вошел пользователь в систему или вышел.

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

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

2. ДА. Когда вы так говорите, это звучит нелепо :). Итак, если мы не можем проверить статус пользователя в Сети без разрешения, какое разрешение нам нужно для этого?

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

Ответ №1:

Я обнаружил, что когда пользователь Facebook, не являющийся пользователем, получает доступ к странице, вы можете проверить людей [возраст] из signedRequest (насколько я проверял, для этой информации не требуется разрешение), и у нее будет свойство max и min.

У зарегистрированного facebook пользователя будет только свойство min, поскольку это его фактический возраст. Я полагаю, что эта информация предоставлена для доставки контента, ограниченного возрастными рамками.

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

Это дает 3 состояния пользователя, извлекая информацию из подписанного запроса:

  • Анонимный: имеет свойства максимального и минимального возраста
  • Facebook User: Имеет только свойство min age
  • Пользователь Facebook (который дал разрешение): Имеет идентификатор пользователя

Помните, что facebook может отменить эту функциональность в любое время, и я действительно только немного протестировал это. Удачи.