AJAX с аутентификацией в Facebook - PullRequest
2 голосов
/ 25 января 2011

Я создал полностью основанное на AJAX приложение, которое не обновляет страницу и загружает все, используя AJAX. Теперь я хочу встроить аутентификацию Facebook таким образом, чтобы пользователь не перенаправлял страницу на обновление.

В настоящее время Facebook работает следующим образом:

Пользователь перенаправляется на Facebook, нажав кнопку подключения Facebook https://graph.facebook.com/oauth/authorize?client_id=xxxxxxxxxxxxxx&redirect_uri=http://www.xxxxxxxxxx.com/JoinFB.html?&type=user_agent&display=popup&scope=offline_access,publish_stream,sms,email,user_birthday,user_photos,user_photo_video_tags,user_checkins,friends_checkins

После действия пользователя будет выполнено перенаправление «Разрешить» или «Запретить» на http://www.xxxxxxxxxx.com/JoinFB.html, и тогда я смогу использовать Javascript для чтения информации о пользователе.

Проблема в том, что я могу как-то преодолеть этот процесс перенаправления страниц, используя IFRAME или что-то еще?

Как мне определить IFRAME как разрешенный пользователем или нет?

1 Ответ

4 голосов
/ 26 января 2011

Я бы использовал JS-SDK , идеальный пример - пример PHP-SDK Facebook :

<code><?php

require '../src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '344617158898614',
  'secret' => '6dc8ac871858b34798bc2488200e503d',
));

// See if there is a user from a cookie
$user = $facebook->getUser();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'
'; $ user = null; } } ?> <! DOCTYPE html> <? php if ($ user) {?> Ваш профиль пользователя
        <?php print htmlspecialchars(print_r($user_profile, true)) ?>
      
<? php} else {?> <Фб: войти кнопки> </ FB: войти кнопки> <? php}?>
window.fbAsyncInit = function () { FB.init ({ appId: '<? php echo $ facebook-> getAppID ()?>', cookie: правда, xfbml: true, oauth: правда }); FB.Event.subscribe ('auth.login', function (response) { window.location.reload (); }); FB.Event.subscribe ('auth.logout', function (response) { window.location.reload (); }); }; (function () { var e = document.createElement ('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; document.getElementById ( 'FB-корень') AppendChild (е). } ());

Теперь нажимаем fb:login-button:

<fb:login-button scope="offline_access,publish_stream,sms,email,user_birthday,user_photos,user_photo_video_tags,user_checkins,friends_checkins"></fb:login-button>

Откроется всплывающее окно Facebook, и после процесса авторизации всплывающее окно закроется автоматически, и будет вызвано событие auth.login, я бы изменил метод перезагрузки window.location.reload(); на вызов ajax, чтобы сделать все, что вы делает.

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