Facebook Connect: Javascript протоколирует сессию, но PHP не - PullRequest
1 голос
/ 08 марта 2012

У меня был пример реализации входа в Facebook, и я понял, что он перестал работать:

 <?php
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'myappid',
  'secret' => 'mybigsecreet',
  'cookie' => true,
));

// We may or may not have this data based on a $_GET or $_COOKIE based session.
//
// If we get a session here, it means we found a correctly signed session using
// the Application Secret only Facebook and the Application know. We dont know
// if it is still valid until we make an API call using the session. A session
// can become invalid if it has already expired (should not be getting the
// session back in this case) or if the user logged out of Facebook.
$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');

        $r = new registro_usuarios();
        $r->facebook($uid,$me['name'],'https://graph.facebook.com/'.$me['id'].'/picture');

        echo '----------------------------'.$me;
  } catch (FacebookApiException $e) {
    error_log($e);
    echo '----------------------------'.$e;
  }
}else echo 'nosession';
echo $session;

печатает nosesion, но когда я нажимаю кнопку входа в систему (facebook) журналы Firebug: FB.login() called when user is already connected. и всплывающее окно входа в систему (facebook) не открывается.

Чего мне не хватает? Является ли Facebook-API устаревшим через год ??

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

$facebook->getSession() больше не работает.Вот почему он может выходить из 1-го цикла if.

$ session = $ facebook-> getSession ();

$ session всегда равен нулю.

Вы можете проверить качаниена $facebook->getUser() если он дает 0, тогда нет активного сеанса, иначе вы получите идентификатор Facebook пользователя сеанса.

Просмотр этой ссылки также может получить дополнительную информацию:

1 голос
/ 23 марта 2012

Вы должны загрузить последний SDK с Github на https://github.com/facebook/php-sdk

Затем выполните следующее, и пользовательский сеанс будет зарегистрирован.

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

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => '344617158898614',
  'secret' => '6dc8ac871858b34798bc2488200e503d',
));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

Это взято изпример кода.Работает просто отлично для меня.

0 голосов
/ 23 марта 2012

С 1 октября аутентификация OAuth 2.0 является обязательной (см. План изменений здесь: https://developers.facebook.com/roadmap/completed-changes/), и вы должны изменить некоторые функции, которые больше не поддерживаются.

Вы можете проверить новую документацию PHP здесь: https://developers.facebook.com/docs/reference/php/

И документация по аутентификации: https://developers.facebook.com/docs/authentication/

...