Капча в wall.post (vkontakte openapi)
Доброго времени суток!
Подскажите, пожалуйста. Столкнулся с такой проблемой.
У меня есть сайт, подключенный к vkontakte openapi. Мне нужно с него публиковать сообщения на стены пользователей (одно сообщение одному пользователю по запросу). У пользователя приложение (мой подключенный сайт) установлено со всеми необходимыми правами (8195). Пользователь заведомо залогинен Вконтакте.
При загрузке страницы выполняется такой скрипт:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.init({
apiId: 111111 //тут 111111 = id приложения сайта
});
Затем выполняется выборка друзей пользователя:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.Auth.getLoginStatus(function(response){
if (response.session) {
var uid = response.session.mid;
VK.Api.call("friends.get",{
uid: uid,
fields: 'uid,first_name,last_name,photo'
},function(data){
buildFriendList(data.response);
});
} else {
VK.Auth.login(function(response){
if (response.session) {
var uid = response.session.mid;
VK.Api.call("friends.get",{
uids: uid,
fields: 'uid,first_name,last_name,photo'
},function(data){
buildFriendList(data.response);
});
} else {
alert('Authorisation error');
}
},8195);
}
});
По клику на кнопку выполняется такой код:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.Auth.getLoginStatus(function(response){
if (response.session) {
VK.Api.call("wall.post", {
owner_id: uid, // id пользователя, на стену которого публикуется запись.
message: 'Привет!'
}, function(data){
if (data.response) {
alert("OK");
} else if (data.error) {
if (data.error.error_code == 14) {
alert("captcha");
} else if (data.error.error_code == 214) {
alert("Disabled by target user");
} else if (data.error.error_code == 10007) {
return false; //отменено пользователем
}
} else {
alert("Unknown error");
}
});
}
});
Так вот, при нажатии на кнопку, как и положено, появляется окошко Вконтакте, где нужно пожтвердить публикацию на стену. Нажимаем в нем "Разрешить"... И видим перед собой alert "Captcha". То есть openapi вернул error_code=14. Причем, если капчу потом заполнить и отправить, сообщение публикуется.
В документации Вконтакте эта ошибка описана так:
Если какое-либо действие (например, отправка сообщения) выполняется пользователем слишком часто, то запрос к API может возвращать ошибку "Captcha needed". При этом пользователю понадобится ввести код с изображения и отправить запрос повторно с передачей введенного кода Captcha в параметрах запроса.
Но проблема в том, что у меня капча вылезает даже при первом обращении и вообще постоянно! Ни одного сообщения вообще нельзя опубликовать без капчи. Это совершенно неприемлемо.
Подскажите, пожалуйста, что я делаю не так?
Подскажите, пожалуйста. Столкнулся с такой проблемой.
У меня есть сайт, подключенный к vkontakte openapi. Мне нужно с него публиковать сообщения на стены пользователей (одно сообщение одному пользователю по запросу). У пользователя приложение (мой подключенный сайт) установлено со всеми необходимыми правами (8195). Пользователь заведомо залогинен Вконтакте.
При загрузке страницы выполняется такой скрипт:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.init({
apiId: 111111 //тут 111111 = id приложения сайта
});
Затем выполняется выборка друзей пользователя:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.Auth.getLoginStatus(function(response){
if (response.session) {
var uid = response.session.mid;
VK.Api.call("friends.get",{
uid: uid,
fields: 'uid,first_name,last_name,photo'
},function(data){
buildFriendList(data.response);
});
} else {
VK.Auth.login(function(response){
if (response.session) {
var uid = response.session.mid;
VK.Api.call("friends.get",{
uids: uid,
fields: 'uid,first_name,last_name,photo'
},function(data){
buildFriendList(data.response);
});
} else {
alert('Authorisation error');
}
},8195);
}
});
По клику на кнопку выполняется такой код:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
VK.Auth.getLoginStatus(function(response){
if (response.session) {
VK.Api.call("wall.post", {
owner_id: uid, // id пользователя, на стену которого публикуется запись.
message: 'Привет!'
}, function(data){
if (data.response) {
alert("OK");
} else if (data.error) {
if (data.error.error_code == 14) {
alert("captcha");
} else if (data.error.error_code == 214) {
alert("Disabled by target user");
} else if (data.error.error_code == 10007) {
return false; //отменено пользователем
}
} else {
alert("Unknown error");
}
});
}
});
Так вот, при нажатии на кнопку, как и положено, появляется окошко Вконтакте, где нужно пожтвердить публикацию на стену. Нажимаем в нем "Разрешить"... И видим перед собой alert "Captcha". То есть openapi вернул error_code=14. Причем, если капчу потом заполнить и отправить, сообщение публикуется.
В документации Вконтакте эта ошибка описана так:
Если какое-либо действие (например, отправка сообщения) выполняется пользователем слишком часто, то запрос к API может возвращать ошибку "Captcha needed". При этом пользователю понадобится ввести код с изображения и отправить запрос повторно с передачей введенного кода Captcha в параметрах запроса.
Но проблема в том, что у меня капча вылезает даже при первом обращении и вообще постоянно! Ни одного сообщения вообще нельзя опубликовать без капчи. Это совершенно неприемлемо.
Подскажите, пожалуйста, что я делаю не так?
1 ответов
Проблема была в том, что в тексте сообщения содержалась ссылка для перехода на сайт. Когда на стену постится ссылка, вконтакте требует ввести капчу (как защита от спама).
так вот я и прошу пример по
Формировать форму капчи нужно своими силами. После ввода символов с картинки, необходимо повторить запрос wall.post, добавив туда дополнительные параметры: captcha_sig и captcha_key.
вот это не понимаю как сделать