Размещение на стене в фейсбуке - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь опубликовать на своей странице в фейсбуке, используя curl, но получаю следующую ошибку

The user hasn't authorized the application to perform this action

Как сгенерировать правильный токен доступа с помощью curl? если вы перейдете по этому адресу http://developers.facebook.com/tools/explorer/

Затем я могу вставить следующее https://graph.facebook.com/337588736279406/feed, и это покажет мой фид на стене, затем я могу изменить его на публикацию и добавить поле для содержимого сообщения, если я запусту его, я получу следующий ответ.

    {
  "error": {
    "message": "(#200) The user hasn't authorised the application to perform this action", 
    "type": "OAuthException", 
    "code": 200
  }
}

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

Может ли кто-нибудь помочь мне в этом.

    <?php

function postify($arr) {
    $fields_string = '';
    foreach ($arr as $key => $value) {
        $fields_string .= $key . '=' . $value . '&';
    }
    return rtrim($fields_string, '&');
}


$appid = 'app id';
$redirect_url = 'http://stickynote.users36.interdns.co.uk';
$app_secret = 'app secret';
$page_id = '337588736279406';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id='.$appid.'&redirect_uri='.$redirect_url.'&client_secret='.$app_secret.'&perms=publish_stream');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);

$output = explode("=", $output);

curl_close($ch);

$postdata = array(
    'message' => 'this is a test message',
);


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/'.$page_id.'/feed?access_token='.$output[1].'');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, postify($postdata));
$check = curl_exec($ch);

print_r($check);        

?>

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Чтобы иметь возможность публиковать контент, вы должны предоставить приложению разрешение publish_stream.

Запрос разрешений можно выполнить с помощью OAuth Dialog .

Кстати, еслион вам нужен только для пользователя, для целей тестирования вы можете использовать Проводник, выбрав приложение, нажав Получить токен доступа и проверив необходимые разрешения.

Обновление:
Вы не сможете публиковать сообщения от имени приложения, только пользователя или страницы с соответствующим access_token (для страницы потребуется manage_pages и access_token с accounts подключение user).Нет необходимости указывать perms в access_token поисковом URL.Разрешения должны быть предоставлены до этого шага.

0 голосов
/ 23 февраля 2012

Для этого вам необходимо получить токен доступа к странице.

В документации указано:

Page access_token

Токен доступа, используемый для управления страницей.Это используется, когда вы хотите выполнить операцию, действующую как страница.Этот токен доступа можно получить, выдав HTTP GET для / USER_ID / accounts или / PAGE_ID? Fields = access_token с разрешением manage_pages.Получение / USER_ID / account возвращает список страниц (включая страницы профиля приложения), к которым пользователь имеет административный доступ, в дополнение к access_token для каждой страницы.Кроме того, вы можете получить токен доступа к странице для отдельной конкретной страницы, введя HTTP GET для / PAGE_ID? Fields = access_token с разрешением manage_pages (вы должны запросить поле access_token специально через параметр fields =).См. Документацию по объекту Page для получения дополнительной информации

После получения токена доступа вы можете выполнить эти вызовы API.

...