В разделе
своего сайта я подключаю vk api.Далее я создал функцию vk_share для обработки проверки на репост.
function vk_share() { VK.init({ apiId: my_id }); console.log(VK.Api); VK.Observer.subscribe("widgets.like.shared", function f(){ alert("Thank you for your shared."); }); }
И по клику я вызываю функцию:
Репост генерируется нормально, но алерт после совершения пользователем репоста не происходит. Подскажите как правильно проверять на репост вк. UPD1 по совету Александра попытался добавить виджет
VK.Widgets.Like("vk_like", {type: "button"});
Получаю следующую ошибку:
VK.Widgets: object #vk_like not found.
Также добавил onlyWidget true. Код функции проверки репоста сейчас вот такой
function vk_share() { VK.init({ apiId: 5216642, onlyWidgets: true }); VK.Widgets.Like("vk_like", {type: "button"}); console.log(VK.Api); VK.Observer.subscribe("widgets.like.shared", function f(){ alert("Thank you for your shared."); }); }
Ответ
Вариант – предлагать сделать wall.post() через API, и получать id созданного поста в ответ. Работающий пример
Подключаете OpenApi, делаете кнопку и примерно такой скрипт:
VK.init({ apiId: XXXXXX }); // id вашего приложения ВК, где в настройках прописан ваш домен
document.getElementById('btn-podel').addEventListener('click', hClick); // ждём нажатий на кнопку
function hClick() { // обработчик нажатия
VK.Api.call('wall.post', {message:"test"}, hPost);
}
function hPost(r) { // обработчик окончания выполнения API запроса
if(!r) throw "Bad response from VK";
if( r.error) { // если отказался постить
console.log("Not posted. Error:", r.error);
} else if( r.response) {
if( r.response.post_id) { // это id свежесозданного поста
console.log("Posted with id ", r.response.post_id);
} else {
console.log("No post id, no idea why", r);
}
} else {
console.log("Not posted, no idea why", r);
}
}
Недостаток этого способа в том, что пост делается только на стену пользователя. Нет выбора, как у виджета, куда отправить: себе на стену, в сообщество, личным сообщением.
Преимущество – в том, что вы получаете id поста, и, сохранив его у себя, можете через какое-то время проверять, висит ли он ещё, и с тем ли содержанием. Я как-то реализовывал механику, где юзер делал репост, который должен провисеть, как минимум, сутки – только после этого юзер мог получить «награду» – скачать какой-то файл.
Комментариев нет:
Отправить комментарий