ВКонтакте API 3.0. Пример простого приложения

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Александр » 17 сен 2013, 20:19

Апчхи
В этом уроке не используется vk.*. Он для того чтобы начинающие понимали как происходит взаимодействие с api напрямую, а не через APIConnection.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение 12funteam89 » 22 ноя 2013, 17:09

Помогите пожалуйста.
vkava.as, строка 125 1120: Обращение несуществующего свойства MD5.
Ругается на эту строку.
Изображение
Аватара пользователя
12funteam89

 
Сообщения: 99
Зарегистрирован: 29 окт 2010, 15:34
Откуда: Санкт-Петербург
Благодарил (а): 4 раз.
Поблагодарили: 2 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение sasha^ » 22 ноя 2013, 17:17

создай файл MD5.as с таким кодом и кинь в туже папку где и файл с ошибкой:
  1. package {
  2.   public class MD5 {
  3.       public static function encrypt(data: String): String {
  4.         var x:Array;
  5.         var k: Number, AA: Number,
  6.             BB: Number, CC: Number,
  7.             DD: Number, a: Number,
  8.             b: Number, c: Number,d: Number;
  9.         var S11: Number=7, S12: Number=12, S13: Number=17, S14: Number=22;
  10.         var S21: Number=5, S22: Number=9 , S23: Number=14, S24: Number=20;
  11.         var S31: Number=4, S32: Number=11, S33: Number=16, S34: Number=23;
  12.         var S41: Number=6, S42: Number=10, S43: Number=15, S44: Number=21;
  13.  
  14.         data = Utf8Encode(data);
  15.  
  16.         x = ConvertToWordArray(data);
  17.  
  18.         a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
  19.  
  20.         for (k=0;k<x.length;k+=16) {
  21.             AA=a; BB=b; CC=c; DD=d;
  22.             a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
  23.             d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
  24.             c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
  25.             b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
  26.             a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
  27.             d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
  28.             c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
  29.             b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
  30.             a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
  31.             d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
  32.             c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
  33.             b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
  34.             a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
  35.             d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
  36.             c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
  37.             b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
  38.             a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
  39.             d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
  40.             c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
  41.             b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
  42.             a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
  43.             d=GG(d,a,b,c,x[k+10],S22,0x2441453);
  44.             c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
  45.             b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
  46.             a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
  47.             d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
  48.             c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
  49.             b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
  50.             a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
  51.             d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
  52.             c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
  53.             b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
  54.             a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
  55.             d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
  56.             c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
  57.             b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
  58.             a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
  59.             d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
  60.             c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
  61.             b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
  62.             a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
  63.             d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
  64.             c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
  65.             b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
  66.             a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
  67.             d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
  68.             c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
  69.             b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
  70.             a=II(a,b,c,d,x[k+0], S41,0xF4292244);
  71.             d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
  72.             c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
  73.             b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
  74.             a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
  75.             d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
  76.             c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
  77.             b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
  78.             a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
  79.             d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
  80.             c=II(c,d,a,b,x[k+6], S43,0xA3014314);
  81.             b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
  82.             a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
  83.             d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
  84.             c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
  85.             b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
  86.             a=AddUnsigned(a,AA);
  87.             b=AddUnsigned(b,BB);
  88.             c=AddUnsigned(c,CC);
  89.             d=AddUnsigned(d,DD);
  90.         }
  91.  
  92.         var temp:String = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
  93.  
  94.         return temp.toLowerCase();
  95.       }
  96.  
  97.       private static function RotateLeft(lValue: int, iShiftBits: int):Number {
  98.           return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
  99.       }
  100.  
  101.       private static function AddUnsigned(lX: int,lY: int):Number {
  102.           var lX4: int,lY4: int,lX8: int,lY8: int,lResult: int;
  103.           lX8 = (lX & 0x80000000);
  104.           lY8 = (lY & 0x80000000);
  105.           lX4 = (lX & 0x40000000);
  106.           lY4 = (lY & 0x40000000);
  107.           lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
  108.           if (lX4 & lY4) {
  109.               return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  110.           }
  111.           if (lX4 | lY4) {
  112.               if (lResult & 0x40000000) {
  113.                   return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
  114.               } else {
  115.                   return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
  116.               }
  117.           } else {
  118.               return (lResult ^ lX8 ^ lY8);
  119.           }
  120.       }
  121.  
  122.       private static function F(x: int, y: int, z: int): int { return (x & y) | ((~x) & z); }
  123.       private static function G(x: int, y: int, z: int): int { return (x & z) | (y & (~z)); }
  124.       private static function H(x: int, y: int, z: int): int { return (x ^ y ^ z); }
  125.       private static function I(x: int, y: int, z: int): int { return (y ^ (x | (~z))); }
  126.  
  127.       private static function FF(a:int,b:int,c:int,d:int,x:int,s:int,ac:int): int {
  128.           a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  129.           return AddUnsigned(RotateLeft(a, s), b);
  130.       }
  131.  
  132.       private static function GG(a:int,b:int,c:int,d:int,x:int,s:int,ac:int): int {
  133.           a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  134.           return AddUnsigned(RotateLeft(a, s), b);
  135.       }
  136.  
  137.       private static function HH(a:int,b:int,c:int,d:int,x:int,s:int,ac:int): int {
  138.           a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  139.           return AddUnsigned(RotateLeft(a, s), b);
  140.       }
  141.  
  142.       private static function II(a:int,b:int,c:int,d:int,x:int,s:int,ac:int):Number {
  143.           a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  144.           return AddUnsigned(RotateLeft(a, s), b);
  145.       }
  146.  
  147.       private static function ConvertToWordArray(string:String):Array {
  148.           var lWordCount: Number;
  149.           var lMessageLength: Number = string.length;
  150.           var lNumberOfWords_temp1: Number=lMessageLength + 8;
  151.           var lNumberOfWords_temp2: Number=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
  152.           var lNumberOfWords: Number = (lNumberOfWords_temp2+1)*16;
  153.           var lWordArray:Array = new Array(lNumberOfWords-1);
  154.           var lBytePosition: Number = 0;
  155.           var lByteCount: Number = 0;
  156.           while ( lByteCount < lMessageLength ) {
  157.               lWordCount = (lByteCount-(lByteCount % 4))/4;
  158.               lBytePosition = (lByteCount % 4)*8;
  159.               lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
  160.               lByteCount++;
  161.           }
  162.           lWordCount = (lByteCount-(lByteCount % 4))/4;
  163.           lBytePosition = (lByteCount % 4)*8;
  164.           lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
  165.           lWordArray[lNumberOfWords-2] = lMessageLength<<3;
  166.           lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
  167.           return lWordArray;
  168.       }
  169.  
  170.       private static function WordToHex(lValue:Number):String {
  171.           var WordToHexValue:String="",WordToHexValue_temp:String="",lByte:Number,lCount:Number;
  172.           for (lCount = 0;lCount<=3;lCount++) {
  173.               lByte = (lValue>>>(lCount*8)) & 255;
  174.               WordToHexValue_temp = "0" + lByte.toString(16);
  175.               WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
  176.           }
  177.           return WordToHexValue;
  178.       }
  179.  
  180.       private static function Utf8Encode(string: String): String {
  181.  
  182.           var utftext:String = "";
  183.  
  184.           for (var n:Number = 0; n < string.length; n++) {
  185.  
  186.               var c:Number = string.charCodeAt(n);
  187.  
  188.               if (c < 128) {
  189.                   utftext += String.fromCharCode(c);
  190.               }
  191.               else if((c > 127) && (c < 2048)) {
  192.                   utftext += String.fromCharCode((c >> 6) | 192);
  193.                   utftext += String.fromCharCode((c & 63) | 128);
  194.               }
  195.               else {
  196.                   utftext += String.fromCharCode((c >> 12) | 224);
  197.                   utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  198.                   utftext += String.fromCharCode((c & 63) | 128);
  199.               }
  200.  
  201.           }
  202.  
  203.           return utftext;
  204.       }
  205.   }
  206. }

За это сообщение автора sasha^ поблагодарил:
12funteam89
sasha^

 
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52
Благодарил (а): 1 раз.
Поблагодарили: 136 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение dima2285 » 12 янв 2014, 20:02

Спасибо, за статью!
Помогло понять суть работы с API.
Нигде больше не нашел.
dima2285

 
Сообщения: 1
Зарегистрирован: 12 янв 2014, 18:29
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Agiliter » 02 фев 2014, 17:56

Всё сделал по инструкции. Вылезла ошибка
TypeError: Error #2007: Параметр url не должен быть равен нулю.
at flash.net::URLStream/load()
at flash.net::URLLoader/load()
at Main/getProfile()
at Main()

Заменил в 19-й строчке мэйна ID на айди приложения. Может где-то еще заменить надо? ИЛи я туплю.
С уважением,
М.Ф.
Agiliter

 
Сообщения: 112
Зарегистрирован: 01 фев 2014, 13:46
Благодарил (а): 29 раз.
Поблагодарили: 0 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение kamneed » 10 июл 2014, 15:10

Agiliter писал(а):Всё сделал по инструкции. Вылезла ошибка
TypeError: Error #2007: Параметр url не должен быть равен нулю.


по моему опыту эта ошибка не влияет на выполнение приложения когда оно загружено во вконтакте

также, опытным путем определил, что имя класса когда подключаем его к проекту пишем без расширения .as, то есть просто Main
kamneed

 
Сообщения: 3
Зарегистрирован: 10 июл 2014, 13:06
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение kamneed » 10 июл 2014, 15:11

Agiliter писал(а):Заменил в 19-й строчке мэйна ID на айди приложения. Может где-то еще заменить надо? ИЛи я туплю.


больше ничего менять не надо, все что писали выше типа поменять sig или поставить test флажок - ничего не надо, делаем все в точности по уроку и все работает
kamneed

 
Сообщения: 3
Зарегистрирован: 10 июл 2014, 13:06
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Jameses1 » 06 апр 2015, 20:51

Ребят. а как сделать сохранение, того, кто зашёл на приложение? Ну, типа отправлялось, чтоб или по почте или высвечивалось, по типу поиска гостей в Вк..?
Jameses1

 
Сообщения: 1
Зарегистрирован: 06 апр 2015, 19:28
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Пред.

Вернуться в Уроки по использованию ВКонтакте API



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0