Wall.post VK API PHP

233
18 октября 2018, 03:00

Ребят, что я делаю не так. Нужно с сайта публиковать записи на стене пользователя по нажатию на кнопку.
Первый раз работаю с ВК АПИ, навоял такое чудо:

<?php 
$app_id = '6654174';
$protected_key = 'Hi9nLwgeFOomNlD4hF01';
$service_key = '3490c9e13490c9e13490c9e12f34f5413f334903490c9e16ff9827204af6e1a1c72fb9c';
$redirect_uri = 'http://test6.webcom.site/beeline/vk.php';
$url = 'http://oauth.vk.com/authorize';
$params = array(
    'client_id'     => $app_id,
    'redirect_uri'  => $redirect_uri,
    'scope' => 'wall',
    'response_type' => 'code',
    'v' => '5.80',
);
echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через ВКонтакте</a></p>';

if (isset($_GET['code'])) {
    $params = array(
        'client_id' => $app_id,
        'client_secret' => $protected_key,
        'code' => $_GET['code'],
        'redirect_uri' => $redirect_uri
    );
}
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
//Получим user_id
$user_id = $token['user_id'];
$access_token = $token['access_token'];
//Тестовый текст
$text = 'Тестовый текст для работы';
$att = 'photo41381383_306443310';
$query = file_get_contents("https://api.vk.com/method/wall.post?v=5.80&owner_id=".$user_id."&attachment=".$att."&message=".urlencode($text)."&access_token=".$access_token);
echo $query;

?>

Авторизация проходит нормально, но не дает написать на стене, говорит:

{"error":{"error_code":15,"error_msg":"Access denied: no access to call this method","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"wall.post"},{"key":"v","value":"5.80"},{"key":"owner_id","value":"41381383"},{"key":"attachment","value":"photo41381383_306443310"},{"key":"message","value":"Тестовый текст для работы"}]}}

Хотя я вроде в scope передал wall.

Answer 1

Проверьте вывод переменной $access_token, есть предположение что неправильно ее передаете, либо она вообще пуста.

Answer 2

Сделал то, что нужно через OpenApi VK

скелет кода

<script type="text/javascript">
  VK.init({
    apiId: ХХХХХХ
  });
  var user_id;
  VK.Auth.login(function(response) {
  if (response.session) {
    /* Пользователь успешно авторизовался */
    alert(response.session.user.id);
    user_id =  response.session.user.id;
            VK.Api.call('wall.post', {owner_id: user_id,  message: 'strippedText'}, function(r)
                {
                    //если пришел ответ - запись добавлена
                    if(r.response){
                        //сообщаем об успехе
                        alert("Запись успешно добавлена в группу ВКонтакте");
                    }
                    //если ответ не пришел - репост отменен
                    else
                    {
                        //сообщаем об этом
                        alert("Запись в группу ВКонтакте отменена");
                    }
                });
    if (response.settings) {
      /* Выбранные настройки доступа пользователя, если они были запрошены */
    }
  } else {
    /* Пользователь нажал кнопку Отмена в окне авторизации */
  }

});
</script>
READ ALSO
Подтверждение email пользователя через API

Подтверждение email пользователя через API

Разрабатываю API для мобильных клиентов на LaravelВ качестве аутентификации пользователя использую Laravel Passport и выдаю им Personal Access token при логине...

215
Что значит часть кода в Laravel?

Что значит часть кода в Laravel?

Мне не понятна часть кода, связанная с роутером в Laravel

164