Facebook PHP SDK не позволяет войти в систему пользователю - PullRequest
0 голосов
/ 06 февраля 2012

Все, Я использую WordPress и пытаюсь, чтобы мой пользователь вошел в систему через Facebook. В моем header.php для Wordpress у меня есть следующий код:

define('123', '123');

//uses the PHP SDK.  Download from https://github.com/facebook/php-sdk
require 'facebook.php';

$facebook = new Facebook(array(
  'appId'  => '123',
  'secret' => '12345',
  'cookie' => true,
));

$uid = $facebook->getUser();
if ($uid) {
    try {
        $userInfo = $facebook->api('/' + $uid);
        $qry = "Select user_id, role from event_details where email_address='$userInfo[email]'";
        echo $qry;
        $result = mysql_query($qry);
        $resultrows = mysql_num_rows($result);
        if($resultrows>0){
            $resultset = mysql_fetch_array($result);
            $_SESSION['user_id'] = $resultset['user_id'];
            $_SESSION['role'] = $resultset['role'];
            $target = "http://www.website.com/event_choices";
            header("Location:". $target);
        }
    } catch (FacebookApiException $e) {
        error_log($e);
    }
}else{
    echo "not logged into facebook";
}

if ($uid) {
    $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl(array(
    'next'=>'http://www.website.com/event_choices'
    ));
}

Затем, когда я создаю страницу на самом деле в Wordpress, у меня есть следующий код:

<?php if ($uid): ?>
<?php echo "Welcome, ".$uid['first_name']. ".<br />"; ?>
<a href="<?php echo $logoutUrl; ?>">
  <img src="http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif">
</a>
<?php else: ?>
  <a href="<?php echo $loginUrl; ?>">
    <img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif">
  </a>
<?php endif ?>

Здесь отображается кнопка входа в систему, но всякий раз, когда я нажимаю на кнопку, ничего не происходит. Когда я смотрю на исходный код, $ loginUrl не заполняется. Что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2012

При создании URL-адреса входа в систему вы не пропускаете область действия, и здесь передаются все разрешения приложения. Взгляните:

$loginUrl   = $facebook->getLoginUrl(
    array(
        'scope'         => 'email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown',
        'redirect_uri'  => 'http://www.website.com/event_choices'
    )
);

Для получения дополнительной информации посмотрите ссылку на API здесь .

Кроме того, при работе с Facebook иногда важно получить какой-то вывод от FB, чтобы понять, в чем может быть проблема. Вы можете сделать это, обернув свой код следующим образом:

try {
    $user = $facebook->getUser();
    //you can also put your loginURL generation code here to see if you get an error
} catch(Exception $o){
    print_r($o);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...