Facebook API: как публиковать на собственной стене приложения без входа в систему

Я хочу опубликовать на своей собственной стене текст с помощью script, но без входа в систему, потому что это должно быть сделано автоматически. Как я мог это сделать? Я уже пробовал:

$fb = new Facebook(array(
    'appId'  => 'appid',
    'secret' => 'appsecret',
    'cookie' => true
));


if ($fb->getSession()) {
    // Post
} else {
    // Logger
    // Every time I get in here :(
}

Что мне нужно сделать, чтобы получить доступ к сообщению в моей собственной стене приложения с помощью script?

Ответ 1

Если вы хотите публиковать сообщения на своей собственной стене приложения, вам нужен только токен приложения, и если вы хотите публиковать его на стене пользователя без входа в систему, вам также нужен этот токен с открытым доступом для пользователей, для запроса разрешения автономного доступа.

Публиковать на стене приложения:

1- Заверните эту ссылку, чтобы получить токен доступа к приложениям:

https://graph.facebook.com/oauth/access_token?    client_id = YOUR_APP_ID & client_secret = YOUR_APP_SECRET &    grant_type = client_credentials

2- Публикация на стену без проверки сеанса

Пример:

<?php
require_once 'facebook.php'

//Function to Get Access Token
function get_app_token($appid, $appsecret)
{
$args = array(
'grant_type' => 'client_credentials',
'client_id' => $appid,
'client_secret' => $appsecret
);

$ch = curl_init();
$url = 'https://graph.facebook.com/oauth/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$data = curl_exec($ch);

return json_encode($data);
}

// Create FB Object Instance
$facebook = new Facebook(array(
    'appId'  => $appid,
    'secret' => $appsecret,
    'cookie' => false,
    ));


//Get App Token
$token = get_app_token($appid, $appsecret);

//Try to Publish on wall or catch the Facebook exception
try {
$attachment = array('message' => '',
            'access_token' => $token,
                    'name' => 'Attachment Name',
                    'caption' => 'Attachment Caption',
                    'link' => 'http://apps.facebook.com/xxxxxx/',
                    'description' => 'Description .....',
                    'picture' => 'http://www.google.com/logo.jpg',
                    'actions' => array(array('name' => 'Action Text', 
                                      'link' => 'http://apps.facebook.com/xxxxxx/'))
                    );

$result = $facebook->api('/'.$appid.'/feed/', 'post', $attachment);
}

//If the post is not published, print error details
catch (FacebookApiException $e) {
echo '<pre>';
print_r($e);
echo '</pre>';
}

Проверьте часть APP LOGIN на этой странице для получения дополнительной информации: http://developers.facebook.com/docs/authentication/

Ответ 2

Я не могу оставить это как комментарий, поскольку у меня нет точек, но если у кого-то есть аналогичная проблема - если ответ McSharks не работает, удалите json_encode как его кавычки кодировки и он должен работать.