Размещение на стене в фейсбуке

Я пытаюсь опубликовать на своей странице в Facebook, используя 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 ответа

Решение

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

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

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

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

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

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

Страница access_token

Access_token используется для управления страницей. Это используется, когда вы хотите выполнить операцию, действующую как страница. Этот токен доступа можно получить, выдав HTTP GET для /USER_ID/account или /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.

Другие вопросы по тегам