Немедленный режим входа в Facebook? - PullRequest
2 голосов
/ 30 мая 2011

Я использую OAuth-интерфейс Facebook, но не могу заставить работать немедленный параметр режима. Есть ли у вас какие-либо идеи, как это работает с FB или любым другим URL вместо?!

(я не / не могу использовать библиотеки FB JS.)

Ответы [ 3 ]

2 голосов
/ 31 мая 2011

Я извлек следующий URL из FB php-sdk (который Квентин напоминает мне):

https://www.facebook.com/extern/login_status.php
  ?api_key=<your app-id or api-key>
  &no_user=<callback url>
  &no_session=<callback url>
  &ok_session=<callback url>
  &session_version=3

Когда вы перенаправляете пользователя на вышеупомянутый URL (или открываете его как iframe или всплывающее окно) Facebook тихо / немедленноперенаправляет пользователя / браузера на:

  • no_user, когда пользователь НЕ вошел в систему.
  • no_session, когда пользователь выполнил вход, но еще НЕ авторизовал ваше приложение.
  • ok_session когда пользователь вошел в систему и уже авторизовал ваше приложение.Дополнительные параметры (идентификация пользователя и требуемый токен) будут добавлены к этому URL FB, который необходимо проверить.

Например:

https://www.facebook.com/extern/login_status.php
  ?api_key=123456789012345
  &no_user=http://example.com/signin/fb/no_user
  &no_session=http://example.com/signin/fb/no_session
  &ok_session=http://example.com/signin/fb/ok_session
  &session_version=3

Поместите их в одну строку сбез пробелов и не забывайте кодировать URL-адреса, если это необходимо.

См. OpenID Immediate mode, чтобы узнать, почему это полезно.

2 голосов
/ 30 мая 2011

Отличный способ сделать так, чтобы пользователи заходили на ваш сайт с помощью своей учетной записи Facebook, - это использование PHP PHP SDK ( см. На github ). Так что у вас будет что-то вроде:

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

Если пользователь вошел в систему, тогда $user - это его идентификатор Facebook. Затем вам нужно проверить, есть ли у вас действующий токен доступа, сделав вызов API:

  • Если оно не вызывает никаких исключений, значит, у вас есть действительный токен доступа

  • Если это так, вы должны повторно аутентифицировать пользователя.

Вот, пожалуйста:

if ($user) {
  try {
    $facebook->api('/me');
  } catch (FacebookApiException $e) {
    $user = null;
  }
}

Затем необходимо отобразить ссылку для входа или выхода из системы:

<?php if ($user): ?>
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>

Когда пользователь вошел в систему и у вас есть действующий токен доступа, вы можете совершать вызовы API для получения данных из Facebook:

$user_profile = $facebook->api('/me');

Возможно, вы захотите проверить пример страницы в PHP PHP SDK , которая хорошо документирована.

Надеюсь, это поможет.

0 голосов
/ 30 мая 2011

Если вы разрабатываете Java-приложение, в этом случае вы можете использовать библиотеку SoicalAuth.

http://code.google.com/p/socialauth/

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