Как определить, если пользователь ранее авторизовал права на приложение с вкладками, не показывая диалог авторизации? - PullRequest
4 голосов
/ 26 сентября 2011

Как можно определить, авторизовал ли пользователь ранее приложение с вкладками, не показывая пользователю диалоговое окно авторизации? Это проблема взаимодействия с пользователем. Мы не хотим бросать пользователя в диалог авторизации без призыва к действию, но мы не хотим, чтобы призыв к действию отображался для входа пользователя, если пользователь ранее авторизовал приложение.

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

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Вы можете использовать javascript SDK и проверить состояние входа в систему, чтобы узнать, авторизовали ли они ваше приложение.Если они есть, вы можете перенаправить с помощью javascript в другом месте или сделать необходимые звонки.Если у них их нет, вы можете показать призыв к действию на своей странице.Что-то вроде:

FB.getLoginStatus(function(response){
  if(!response.authResponse){
    // redirect to authorization page
    top.location.href="http://www.facebook.com/dialog/oauth?client_id=appid&redirect_uri=http://facebook.com/somefanpage";
    // or instead show a call to action div
  } else {
   //load fan page specific content
 }
});

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

1 голос
/ 26 сентября 2011

Ну, Facebook отправит идентификатор пользователя в signed_request только , когда пользователь авторизует ваше приложение.Таким образом, до тех пор, пока эта часть информации отсутствует, это означает, что пользователь еще не авторизовал ваше приложение, т. Е. Показывает диалог авторизации (или перенаправляет на экран аутентификации)!

Подробнее об этом можно узнать в Учебник вкладок страницы :

Интеграция с API-интерфейсами Facebook

Когда пользователь перемещаетсяна страницу Facebook, они увидят вашу вкладку страницы добавленной в следующей доступной позиции вкладки.В общем, вкладка страницы загружается точно так же, как страница холста.Подробнее об этом читайте в руководстве по холсту.Когда пользователь выбирает вашу вкладку страницы, вы получите параметр signature_request с одним дополнительным параметром page.Этот параметр содержит объект JSON с идентификатором (идентификатор страницы текущей страницы), администратором (если пользователь является администратором страницы) и понравившимся (если пользователю понравилась страница). Как и на странице холста, вы не получите всю информацию о пользователях, доступную для вашего приложения в подписанном запросе, пока пользователь не авторизует ваше приложение.

...