Привет. Для меня определили задачу с созданием игры Facebook, но я плохо знаком с разработкой Facebook, таким образом, я просто начинаю. Извинения заранее, если это - легкая задача людям.
Я испытываю затруднения после всех примеров, которые я вижу на сайтах, и я продолжаю сталкиваться с недостающими страницами в документации Facebook, когда я пытаюсь читать. Я думаю, что это - потому что существует новая версия Клиентской Библиотеки PHP для Facebook и всего, что я нахожу, относится к старому клиенту.
Например, я вижу этот код в большом количестве примеров:
require 'facebook.php';
$facebook = new Facebook( array( 'appId' => '(id)', 'secret' => '(secret)' ) );
$facebook_account = $facebook->require_login();
... но существует не "require_login ()" в клиентской библиотеке, обеспеченной в facebook.php файле.
Из того, что я могу сказать, похоже, что Facebook совсем недавно развернул некоторую новую систему для разработки, но я не вижу примера кода где угодно для контакта с ним. Новая библиотека идет с "example.php" файлом, но это, кажется, только для добавления, "Входят в систему с Facebook" функциональность на другие сайты (что я принимаю, то, что они подразумевают "под сайтами" Подключения Facebook), не для просто запущенных приложений на странице Canvas в самом Facebook.
А именно, что я должен сделать, позволяют пользователям посетить страницу приложения в рамках Facebook, иметь его, поднимают диалоговое окно, позволяющее им авторизовать приложение, иметь его, обнаруживаются на их "игровой" странице и затем имеют его, передают меня соответствующая информация о пользователе, таким образом, я могу начать создавать игру. Но я, может казаться, не нахожу учебных руководств или примеров, которые показывают, как сделать это пользующееся новой библиотекой. Кажется, что это должно быть довольно просто, но я сталкиваюсь с контрольно-пропускными пунктами.
Или я пропускаю что-то о клиентской библиотеке PHP? Должен require_login () работать на меня, и существует что-то порванное моя реализация, такая как наличие неправильной клиентской библиотеки или чего-то? Я вчера загрузил с GitHub, таким образом, я вполне уверен, у меня есть новая версия кода, который я имею, но возможно я загружаю несправедливость "facebook.php" файл...?
Ниже представлена перезапись старой функции require_login
. Он в точности дублирует старый функционал.
function facebook_require_login($required_permissions = '')
{
global $facebook; // NOTE GLOBAL FACEBOOK OBJECT, MUST ALREADY BE INSTANTIATED
$user = $facebook->get_loggedin_user();
$has_permissions = true;
if ($required_permissions) {
$facebook->require_frame();
$permissions = array_map('trim', explode(',', $required_permissions));
foreach ($permissions as $permission) {
if (!in_array($permission, $facebook->ext_perms)) {
$has_permissions = false;
break;
}
}
}
if ($user && $has_permissions) return $user;
$facebook->redirect(
$facebook->get_login_url(Facebook::current_url(), $facebook->in_frame(),
$required_permissions));
}
Новый скрипт php на git hub - это оболочка для api facebooks, я полагаю, график, но я тоже видел код для fql, так что кто знает. Форумы в настоящее время не работают, и IRC был мертв, когда я перешел. Я искал то же решение, что и вам требуется авторизация для вызова -> api (\ me). Поскольку сценарий расширяет другой класс, если я правильно помню, вы можете попробовать использовать класс / функцию отражения, чтобы узнать, какие методы доступны. Надеюсь, в ближайшее время появится надежная документация! Пожалуйста, дайте мне знать, если вы решите эту проблему. (Извините за плохое форматирование, я использую свой мобильный)
Что ж, я смог найти решение проблемы авторизации приложений с помощью нового PHP SDK. Вы можете проверить мое сообщение в блоге здесь .
Короче говоря, вам нужно будет получить сеанс с аутентификацией, а затем вы сможете вызвать функции для получения идентификатора вошедшего в систему пользователя. В этом случае вы вызовете путь «/ me» из Graph API.
Решение phpfour является единственно правильным, поскольку оно использует новую библиотеку php-sdk из github.
Лучшее решение - отредактировать новый facebook.php и добавить функцию require_login () (чтобы все существующие страницы, использующие ее, могли остаться прежними)
public function require_login(){
if ( !$this->getSession() ) {
$url = $this->getLoginUrl( array(
'canvas' => 1,
'fbconnect' => 0
));
echo "<script type='text/javascript'>top.location.href = '$url';</script>";
}
else
return $this->getUser();
}