Facebook PHP SDK / Graph API - возвращает МОЕ имя / информацию, но никто другой? - PullRequest
1 голос
/ 03 июня 2011

Я пытаюсь использовать Graph API и PHP SDK для Facebook, чтобы попытаться вернуть имя текущего пользователя, но мне только повезло, что оно отображает мое имя. Это довольно просто, и у кого-то, кто знает Graph API, не должно возникнуть проблем с тем, чтобы помочь мне, просто посмотрев на код, который я использую.

require 'facebook.php';

$appid=get_post_meta($thisID,'_EFBPDAppID',true);
$appsec=get_post_meta($thisID,'_EFBPDAppSec',true);
$facebook = new Facebook(array(
  'appId'  => $appid,
  'secret' => $appsec,
  'cookie' => true
));
$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) {
    error_log($e);
    $user = null;
  }
}

И затем я использую это: echo $user_profile['name']; для отображения имени пользователя, но оно отображает только мое имя. В любом другом профиле он просто показывает, где эта переменная пуста. В моем профиле указано мое имя. Я также использовал print_r($user);, и он отображает мой идентификатор, но для любого другого профиля он отображает 0.

Нужно ли пользователям проходить аутентификацию самостоятельно или должен быть сеанс с этой информацией? Как получить информацию о сеансе, если она есть?

Любой, кто может помочь, был бы очень благодарен. Спасибо.

Ответы [ 3 ]

4 голосов
/ 03 июня 2011

Для обеспечения безопасности и конфиденциальности пользователи Facebook должны войти в систему и разрешить текущему приложению иметь доступ к информации своей учетной записи.Вы можете сделать это с помощью другого SDK.Большинство людей используют Javascript, но я предпочитаю PHP.Простая реализация в HTML показана ниже:

<a href="<?php echo $this->facebook->getLoginUrl(array('next' => "http://www.yourdomain.com/facebooklogin_success", 'req_perms' => 'email,read_stream,publish_stream,offline_access'))?>">Login to Facebook</a>

Она сгенерирует что-то вроде:

<a href="https://www.facebook.com/login.php?api_key=1234567890&cancel_url=http%3A%2F%2Fyourdomain.com/facebooklogin_cancel.php%2F&display=page&fbconnect=1&next=http%3A%2F%2Fyourdomain.com/facebooklogin_success.php&return_session=1&session_version=3&v=1.0&req_perms=email%2Cread_stream%2Cpublish_stream%2Coffline_access">Login to Facebook</a>

, после этого вы сможете получить доступ к информации пользователя с помощью Graph API.

$fbuser = $facebook->api('/me');
echo "Hello ".$fbuser['name'];

Дайте мне знать, если у вас работает.

2 голосов
/ 03 июня 2011

http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html

Ваш пользователь должен аутентифицировать приложение, которое вы собираетесь создать.

После этого Facebook будет перенаправлен с access_token (и процесс называется обратным вызовом.)

Сохраните access_token и идентификатор пользователя, чтобы вы могли автоматически получать доступ к данным или публиковать сообщения без входа в Facebook.

0 голосов
/ 27 июня 2011

У меня есть исправление вашей проблемы. Я использую простое приложение Facebook . Работает, но в разработке.

Сначала вы должны авторизовать пользователя и получить его идентификатор. После этого просто замените «я» на user_id, и все готово.

<?php
    require_once 'facebook-php-sdk/src/facebook.php';
    $facebook = new Facebook(array(
        'appId' => '[your app id]',
        'secret' => '[your app secreat]',
        'cookie' => true,
    ));

    // Then authorize the current user in the way you desire 
    // get his user_id
    $user_profile = $facebook->api('/[the user's user id]');

    echo $user_profile['name'];
?> 
...