Я пытаюсь использовать Graph API и PHP SDK для Facebook, чтобы попытаться вернуть имя текущего пользователя, но мне просто повезло, что он показывает мое имя. Это довольно прямолинейно, и кто-то, у кого есть API-интерфейс Graph, не должен иметь никаких проблем, помогая мне просто взглянуть на код, который я использую.
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
.
Нужно ли пользователям проходить аутентификацию или уже есть сеанс с этой информацией? Как получить информацию о сеансе, если она есть?
Любой, кто может помочь, я буду очень благодарен. Благодарю.
Для обеспечения безопасности и конфиденциальности пользователи 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'];
Дайте мне знать, если вы будете работать для вас.
http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html
Ваш пользователь должен аутентифицировать приложение, которое вы собираетесь создать.
После этого facebook будет перенаправлять с помощью access_token (и этот процесс называется обратным вызовом).
Сохраните идентификатор access_token и пользователя, чтобы вы могли получать доступ к данным или отправлять сообщения автоматически без входа в facebook.
У меня есть исправление для вашей проблемы. Я использую простое приложение Facebook . Он работает, но находится в стадии разработки.
Сначала вы должны авторизовать пользователя и получить его идентификатор пользователя. После этого просто замените «me» на 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']; ?>