PDA

Просмотр полной версии : [Вконтакте] Обновление старого кода VK API


саша55555
14.12.2017, 22:02
Помогите переделать код. Этот код взят из чата для VK API на AS3. Но там устаревший VK API, кто поможет подредактировать, чтобы все работало? В исходнике так же была папка vk, ее я заменил на новую из архива, скачанного с ВК "APIConnection".

import flash.display.Sprite;
import flash.text.*;
import flash.events.*;
import vk.APIConnection;
import vk.events.*;
import vk.ui.VKButton;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;

var api_id:Number;
var viewer_id:Number;
var sid:String;
var secret:String;
var time_n:Number=3;//через сколько секунд обновляем окно чата
var flashVars:Object = stage.loaderInfo.parameters as Object;
var VK:APIConnection = new APIConnection(flashVars);
// берем значения с флэш варс
api_id = flashVars['api_id'];//присваеваем апп ид
viewer_id = flashVars['viewer_id'];//виевир ид
sid = flashVars['sid'];//сид
secret = flashVars['secret'];//секрет

//обрабатывание полученых сообщении
function onMessages(data: Object):void{
var count = data.length;//сколько их всего
for (var i=0; i<count; i++){
window_chat.htmlText += '<b><font color="#ff0000">' + data[i]['user_name'] + "</font></b>: " + data[i]['message'];//добавляем строку с его именем и сообщением без ссылки и красного цвета
}
}
//если ошибка
function Errr(data: Object):void{
window_chat.text = data.error_msg;
}
//по нажатию на кнопку отправка сообщении
btn_chat.addEventListener(MouseEvent.CLICK, function(event:MouseEvent) {
VK.api('sendMessage', {message:send_chat.text}, onMessages, Errr);
send_chat.text='';//очищаем
})
//таимер ,который будет обновлять полученый сообщения
function ShortTimer() {
var minuteTimer:Timer = new Timer(1000,time_n);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
minuteTimer.start();
}
//таимер прозвенел
function onTimerComplete(evt:Event):void {
VK.api('getMessages', {}, onMessages, Errr);//гет месагес
ShortTimer()//вызываем таймер еще
}
////////////////
////////////////
////////////////вызываем нужные функции
VK.api('getMessages', {}, onMessages, Errr);
ShortTimer()

faraday
14.12.2017, 22:20
APIConnection не работает из-за блокировки браузером флеш прослойки. Используйте js sdk и общайтесь с ней через externalInterface

function listenEvents(eventList){
eventList.forEach(function(method){
VK.addCallback(method, function(){sendEvent(method,arguments);});
});
}
function apiRequest(method, params, id){
VK.api(method,params, function(result){
sendEvent('apiResult',{id:id, result:result});
})
}
function sendEvent(type,data){
document.getElementById(divId).callback(type,data);
}

саша55555
14.12.2017, 22:32
Извиняюсь, новичок в этом деле, куда ваш отрывок кода вставлять?
И кстати, где это взять
viewer_id = flashVars['viewer_id'];//виевир ид
sid = flashVars['sid'];//сид

faraday
14.12.2017, 23:27
здесь надо переписывать с пониманием дела, а не скопировать. читайте про ExternalInterface и vk jssdk

caseyryan
15.12.2017, 05:54
APIConnection не работает из-за блокировки браузером флеш прослойки.
Что, простите? Какое отношение имеет APIConnection либа к так называемой флеш прослойке? Если флешка запускается в принципе, значит ничего не заблокировано.
А не работает у тебя потому, что ты используешь устаревшие методы API типа getMessages, sendMessage, которые уже лет как ... заменены на методы из этого пакета https://vk.com/dev/messages. Соответственно, скорее всего в этой APIConnection и версия API указана старая.
И кстати, где это взять
Например здесь:

var flashVars:Object = stage.loaderInfo.parameters;

С вк довольно просто работать вообще без всяких APIConnection. Можно формировать запросы самому по вот этой (https://vk.com/dev/api_requests) схеме. Все запросы можно формировать прямо из флеш приложения, никакие JS SDK для этого не нужны.

саша55555
15.12.2017, 14:46
То есть нужно просто методы все заменить новыми и поставить, новый APIConnection?

caseyryan
15.12.2017, 15:55
и поставить, новый APIConnection?
Сомневаюсь, что кто-то обновляет эту библиотеку. Но попробовать можешь.
А на счет методов, да, их надо заменить, и версию API в запросах указать по-новее. Вот тут (https://vk.com/dev/versions) список версий