Facebook Graph API

Заказчик просит привязать свой аккаунт фейсбука к сайту так, чтобы все изменения на сайте отмечались на фейсбуке на стене.

Попробовал использовать их API. Код такой:

$post_data = array(
'access_token' => $access,
'link' => 'http://parademodels.com/Niclette',
'picture' => 'http://www.parademodels.com/public/avatars/Niclette/small.jpg',
'name' => 'Niclette at parademodels',
'caption' => 'Some caption text for testing...',
'description' => 'And this is much bigger text then caption. Here I can use several sentenses, but I won\'t'
);

echo '
';
	var_dump($post_data);
	echo '
';

$ch = curl_init('https://graph.facebook.com/149879695076646/feed');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$res = json_decode(curl_exec($ch));


$access_token я получаю так:

$code = $_GET['code'];

$app_id = {id_приложения};
$app_secret = {секретный_ключ};
$my_url = {url};

if (empty($code)) {

$dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id;
$dialog_url .= "&redirect_uri=" . urlencode($my_url);
$dialog_url .= "&scope=email,publish_stream";
header("Location: " . $dialog_url);

} else {
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id
. "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;

parse_str(file_get_contents($token_url), $parsed);
}


Т.е. я авторизовался на фейсбуке под аккаунтом заказчика. Запустил скрипт и получил $access_token. Затем, скопировав его вручную, вставил в скрипт по внесению записи на стене на фейсбуке. Но действие $access_token составляет около 2 часов. После этого нужно получить новый.

Вариант с авторизацией через фейсбук не катит, т.к. на сайте много разных пользователей.

Нельзя ли делать как-то запрос через Graph API используя как-то связку логин\пароль? Или как еще решить эту задачу?
  • Вопрос задан
  • 5510 просмотров
Пригласить эксперта
Ответы на вопрос 2
sajgak
@sajgak
Нужно запросить у пользователя доступ к offline access, тогда token будет действительным вечно
Ответ написан
Комментировать
@krasulya Автор вопроса
Спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы