Facebook SDK 3.1 getUser основной код не работает - PullRequest
2 голосов
/ 28 ноября 2011

У меня был какой-то действительно сложный код, и теперь я сделал его до смешного простым, и он не работает.

В настоящее время он просто возвращает меня на страницу с отображенным URL-адресом для входа.

Код здесь:

<?php
require 'facebook.php';

// Create our application instance
// (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'sd',
  'secret' => 'sda',
));

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


if($user) {
    echo $user;
} else {
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>'http://www.facebook.com/pages/CharlesTestPage/225802194155435?sk=app_252946408094785','scope'=>'email'));
  echo $loginUrl;
}
exit;
?>

Пожалуйста.Сейчас я потратил на это целый оплачиваемый рабочий день, и сейчас я плачу не только за себя, но и за своего босса.

Cry.

Редактировать: ОК,странно то, что если я установил redirect_uri на вкладку facebook, если он сам не аутентифицирован, то он постоянно перенаправляет в бесконечном цикле.Тем не менее, если я удаляю перенаправления

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Это то, что работает для меня, используя PHP SDK 3.1.1. Попробуйте и дайте нам знать, если это работает:

include('facebook.php');
session_start();

//facebook application
$config['appid' ] = "YOUR_APP_ID";
$config['secret'] = "YOUR_APP_SECRET";
$config['baseurl'] = "http://example.com/facebookappdirectory";
$config['appbaseurl'] = "http://apps.facebook.com/your-app-name";


// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => $config['appid'],
  'secret' => $config['secret'],
  'cookie' => true,
));

$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(
        array(
            'scope' => 'email'
        )
);

if ($user) {
  try {
    //get user basic description
    $userInfo = $facebook->api("/$user");
    $fb_access_token = $facebook->getAccessToken();
  } catch (FacebookApiException $e) {
    //you should use error_log($e); instead of printing the info on browser
    error_log('APP ERROR: '.$e); 
    $user = null;
  }
}

if (!$user) {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    exit;
}

if (isset($_GET['code'])){
    header("Location: " . $config['appbaseurl']);
    exit;
}
0 голосов
/ 24 мая 2012

Проверка для

if(isset($_GET['code'])){

    $user = $facebook->getUser();
    $access_token = $facebook->getAccessToken();

}

Возврат Facebook userID только после входа в систему и этого кода.

...