Facebook API: Как разместить на собственной стене приложения без входа в систему - PullRequest
10 голосов
/ 05 марта 2011

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

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


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

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

Ответы [ 2 ]

13 голосов
/ 05 марта 2011

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

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

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

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

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

Пример:

<code><?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 '
';}

Для получения дополнительной информации см. Раздел ЛОГИН ПРИЛОЖЕНИЯ на этой странице: http://developers.facebook.com/docs/authentication/

3 голосов
/ 31 января 2012

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

...