Ребят, что я делаю не так. Нужно с сайта публиковать записи на стене пользователя по нажатию на кнопку.
Первый раз работаю с ВК АПИ, навоял такое чудо:
<?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
.
Проверьте вывод переменной $access_token, есть предположение что неправильно ее передаете, либо она вообще пуста.
Сделал то, что нужно через 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>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разрабатываю API для мобильных клиентов на LaravelВ качестве аутентификации пользователя использую Laravel Passport и выдаю им Personal Access token при логине...