#php #facebook #api #facebook-graph-api
#php #Facebook #API #facebook-graph-api
Вопрос:
У меня возникли проблемы с использованием авторизации open graph для публикации на facebook-стене посетителей, и, похоже, я не могу понять, где я ошибаюсь. Я использую библиотеку PHP / SDK с Github. Вот мой код:
<?php
require_once('facebook.php');
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
//session-based api call
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
//post to wall/stream function
if(isset($_POST['status'])) {
try {
$result = $facebook->api(
'/me/feed',
'post',
array(
'access_token' => 'ACCESS_TOKEN',
'message' => $_POST['status']
)
);
} catch (FacebookApiException $e) {
echo 'Error: ' . print_r($e, true);
}
}
?>
<!-- HTML Form -->
<form name="" action="index.php" method="post">
<input type="text" name="status" id="status" value="">
<input type="submit" value="submit">
</form>
Я не знаю, что происходит, я просмотрел миллиард руководств, постов, обменов и т.д. И кажется, что я все делаю правильно. Буду признателен за любую помощь.
Комментарии:
1. Как вы используете свой ACCESS_TOKEN?
Ответ №1:
Здесь вы фактически не проверяете, авторизован ли пользователь перед публикацией, и я не вижу, где вы просите пользователя войти в систему. Вот лучший подход:
<?php
require_once('facebook.php');
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
if($session) {
//post to wall/stream function
if(isset($_POST['status'])) {
try {
$result = $facebook->api(
'/me/feed',
'post',
array(
'message' => $_POST['status']
)
);
} catch (FacebookApiException $e) {
echo 'Error: ' . print_r($e, true);
}
}
} else {
$loginUrl = $facebook->getLoginUrl(array(
'req_perms' => 'publish_stream'
));
header("Location: $loginUrl");
}
?>
<!-- HTML Form -->
<form name="" action="index.php" method="post">
<input type="text" name="status" id="status" value="">
<input type="submit" value="submit">
</form>
Ответ №2:
В написанном вами коде предполагается, что вы используете Javascript SDK для создания facebook cookie, который $facebook->getSession()
используется вызовом для входа пользователя в систему: у вас правильно настроен Javascript SDK?
Кроме того, вы предполагаете, что любое приложение, которое вы используете, получило соответствующее разрешение на публикацию на стене пользователя. Смотрите http://developers.facebook.com/docs/authentication/permissions / для получения дополнительной информации о требуемых разрешениях. Вы получили запрошенное разрешение от пользователя?