Люди помогите сделать 4ат в приложении!!!!!!!

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение VIP » 01 дек 2009, 21:29

В этом ты прав но ты же не администратор сайта!!! Так что уникальность картинок себя оправдывает!!! Я пока учусь!!!
VIP

 
Автор темы
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10
Благодарил (а): 23 раз.
Поблагодарили: 1 раз.

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

Google
 



Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение venomich » 01 дек 2009, 21:59

Ну поэтому и только проверено =)
venomich

 
Сообщения: 9
Зарегистрирован: 28 ноя 2009, 20:25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение Deniska » 01 дек 2009, 22:05

Сразу говорю ВСЁ не проверял! Если найдёте ошибки (а они кажеться тут есть) то будем исправлять вместе! Писал что бы люди поняли основную идею
Ну что же начнем:
1.Создаем компонент TextArea и называем mytext.
Для тех кто незнает где найти компонент ===> Нажимаем Ctrl+F7
2.Создаем компонент Input Text и называем input_chat
Для тех кто незнает где найти компонент ===> Нажимаем Ctrl+F7
3. К пример этот файл .fla называем chat и сохраняем.
4.Создаем документ chat.as и в chat.fla к Class пишем chat.as
5. Пишем внутрь:
package {
   import flash.display.*;
   import flash.text.*;
   import flash.events.*;
   import flash.utils.*;
   import flash.net.*;
   import flash.events.KeyboardEvent;
   import flash.display.Stage;




   public class chat extends Sprite {
      public function chat() {
         var params:Object = LoaderInfo(this.root.loaderInfo).parameters;

         
         chat();
         setInterval(chat, 3000);

         
         input_chat.addEventListener(KeyboardEvent.KEY_DOWN, keydown);

         function keydown(event:KeyboardEvent) {
            if (event.keyCode==13) {
               var php_loader:URLLoader = new URLLoader();
               var php_request:URLRequest = new URLRequest("путь к chat.php");
               php_request.method = URLRequestMethod.POST;

               var php_vars:URLVariables = new URLVariables();
               php_vars['auth_key']  = params['auth_key'];
               php_vars['viewer_id'] = params['viewer_id'];
               php_vars['message']   = input_chat.text;
               input_chat.text = "";

               php_request.data = php_vars;
               php_loader.load(php_request);
               php_loader.addEventListener(Event.COMPLETE, onServAnsChat);
            }
         }

      }
      
      public function chat() {
         var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
         var php_loader:URLLoader = new URLLoader();
         var php_request:URLRequest = new URLRequest("путь к chat.phpp");
         php_request.method = URLRequestMethod.POST;

         var php_vars:URLVariables = new URLVariables();
         php_vars['auth_key']  = params['auth_key'];
         php_vars['viewer_id'] = params['viewer_id'];

         php_request.data = php_vars;

         php_loader.addEventListener(Event.COMPLETE, onServAnsChat);
         php_loader.load(php_request);
      }
      private function onServAnsChat(e:Event):void {
         var loader:URLLoader = URLLoader(e.target);
         //this.mytext.text = loader.data;
         this.mytext.htmlText = loader.data;
      }
      private function explode(separator:String, string:String) {

         var list = new Array();

         if (separator == null) {
            return false;
         }
         if (string == null) {
            return false;
         }

         var currentStringPosition = 0;
         while (currentStringPosition<string.length) {
            var nextIndex = string.indexOf(separator, currentStringPosition);
            if (nextIndex == -1) {
               break;
            }
            var word = string.slice(currentStringPosition, nextIndex);
            list.push(word);
            currentStringPosition = nextIndex+1;
         }
         if (list.length<1) {
            list.push(string);
         } else {
            list.push(string.slice(currentStringPosition, string.length));
         }
         return list;
      }

   }
}

6. Создаем серверную часть(можно даже в блокноте) называем файл chat.php
7. Код chat.php :
<?
$app_id    = id приложения;
$api_secret = "ключ от вкладки Платежи";
$api_public = "секретный ключ";

include(" vkapi_class.php");

$auth_key  = $_POST['auth_key'];
$viewer_id = $_POST['viewer_id'];
$message   = $_POST['message'];

$real_key = md5($app_id . "_" . $viewer_id . "_" . $api_secret);

if ($auth_key == $real_key){
   if ($message){
      $name = name_user($app_id, $api_public, $viewer_id);
      file_put_contents("chat.txt", "<b><u><a href='http://vkontakte.ru/id$viewer_id'>$name</a></u></b>: $message\r", 6666);
   }
   $messages = explode("\r", file_get_contents("chat.txt"));

   $how = count($messages);
   if ($how>20){
      $from = $how - 20;
   } else {
      $from = 0;
   }
   
   for ($i=$from; $i<$how; $i++){
      print "{$messages[$i]}\n";
   }
}

?>

8. Создаем серверную часть(можно даже в блокноте) называем файл vkapi_class.php(этот файл нарыл в гугле в нем я на 100% неуверен)
<?
function get_app_balance($api_id, $api_secret){
   $request = Array();
   $request[] = "api_id=$api_id";
   $request[] = "method=secure.getAppBalance";
   $request[] = "timestamp=" . (time() + 172814);
   $request[] = "random=" . rand(1000, 100000);
   $request[] = "v=2.0";

   array_multisort($request);

   $sig = "";
   foreach ($request as $r){
      $sig .= $r;
   }

   $sig .= $api_secret;
   $sig = md5($sig);

   $request[] = "sig=$sig";

   $req = "";

   foreach ($request as $r){
      $req .= "$r&";
   }


   $result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
   file_put_contents("log.txt", "$result\r\n\r\n", 6666);
   preg_match('/<balance>(.*?)<\/balance>/', $result, $out);
   return (int)$out[1];
}

function get_user_balance($app_id, $api_secret, $uid){
   $request = Array();
   $request[] = "api_id=$app_id";
   $request[] = "method=secure.getBalance";
   $request[] = "timestamp=" . (time() + 172814);
   $request[] = "random=" . rand(1000, 100000);
   $request[] = "v=2.0";
   $request[] = "uid=$uid";
   

   array_multisort($request);

   $sig = "";
   foreach ($request as $r){
      $sig .= $r;
   }

   $sig .= $api_secret;
   $sig = md5($sig);

   $request[] = "sig=$sig";

   $req = "";

   foreach ($request as $r){
      $req .= "$r&";
   }


   $result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
   file_put_contents("log.txt", "$result\r\n\r\n", 6666);
   preg_match('/<balance>(.*?)<\/balance>/', $result, $out);
   return (int)$out[1];
}

function transfer_app_user($app_id, $api_secret, $uid, $votes){
   $request = Array();
   $request[] = "api_id=$app_id";
   $request[] = "method=secure.addVotes";
   $request[] = "timestamp=" . (time() + 172814);
   $request[] = "random=" . rand(1000, 100000);
   $request[] = "v=2.0";
   $request[] = "uid=$uid";
   $request[] = "votes=$votes";

   array_multisort($request);

   $sig = "";
   foreach ($request as $r){
      $sig .= $r;
   }

   $sig .= $api_secret;
   $sig = md5($sig);

   $request[] = "sig=$sig";

   $req = "";

   foreach ($request as $r){
      $req .= "$r&";
   }


   $result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
   file_put_contents("log.txt", "$result\r\n\r\n", 6666);
   preg_match('/<transferred>(.*?)<\/transferred>/', $result, $out);
   return (int)$out[1];
}

function transfer_user_app($app_id, $api_secret, $uid, $votes){
   $request = Array();
   $request[] = "api_id=$app_id";
   $request[] = "method=secure.withdrawVotes";
   $request[] = "timestamp=" . (time() + 172814);
   $request[] = "random=" . rand(1000, 100000);
   $request[] = "v=2.0";
   $request[] = "uid=$uid";
   $request[] = "votes=$votes";

   array_multisort($request);

   $sig = "";
   foreach ($request as $r){
      $sig .= $r;
   }

   $sig .= $api_secret;
   $sig = md5($sig);

   $request[] = "sig=$sig";

   $req = "";

   foreach ($request as $r){
      $req .= "$r&";
   }


   $result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
   file_put_contents("log.txt", "$result\r\n\r\n", 6666);
   preg_match('/<transferred>(.*?)<\/transferred>/', $result, $out);
   return (int)$out[1];
}

function name_user($app_id, $api_secret, $user_id){
   $request = Array();
   $request[] = "api_id=$app_id";
   $request[] = "method=getProfiles";
   $request[] = "uids=$user_id";
   $request[] = "v=2.0";
   $request[] = "test_mode=1";

   array_multisort($request);

   $sig = "";
   foreach ($request as $r){
      $sig .= $r;
   }

   $sig = "3975390" . $sig . $api_secret;
   
   $sig = md5($sig);

   $request[] = "sig=$sig";

   $req = "";

   foreach ($request as $r){
      $req .= "$r&";
   }

   $result = file_get_contents("http://api.vkontakte.ru/api.php?$req");
   preg_match("/<first_name>(.*?)<\/first_name>/", $result, $out);
   $fname = $out[1];
   preg_match("/<last_name>(.*?)<\/last_name>/", $result, $out);
   $lname = $out[1];
   $name = "$fname $lname";
   //$name = iconv("UTF-8", "WINDOWS-1251", $name);
   return $name;
}
?>

9.Создаем серверную часть(можно даже в блокноте) называем файл crossdomain.xml (в гланую папку сервера)
<cross-domain-policy>
<allow-access-from domain="*.vkontakte.ru" />
<allow-access-from domain="*.vk.com" />
</cross-domain-policy>


10. Там где залили chat.php добавляем пустой chat.txt и разрешаем всё действия!

Для чего я писал если много ошибок? Затем что бы люди которые больше знают смогли исправить думаю эта статья поможет многим. Надеюсь на людей которые хоть немного исправят.
Последний раз редактировалось Deniska 02 дек 2009, 20:51, всего редактировалось 1 раз.
Аватара пользователя
Deniska

 
Сообщения: 654
Зарегистрирован: 30 окт 2009, 00:07
Благодарил (а): 15 раз.
Поблагодарили: 48 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение VIP » 01 дек 2009, 23:22

+++
Последний раз редактировалось VIP 05 дек 2009, 19:15, всего редактировалось 1 раз.
VIP

 
Автор темы
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10
Благодарил (а): 23 раз.
Поблагодарили: 1 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение Александр » 02 дек 2009, 14:36

Не проверял весь код, но заметил:
9.Создаем серверную часть(можно даже в блокноте) называем файл crossdomain.php(в гланую папку сервера)

Нужно не crossdomain.php, а crossdomain.xml
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение VIP » 02 дек 2009, 18:53

всё равно не работает чат, я в поисках идеи потом залью когда будет работать
VIP

 
Автор темы
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10
Благодарил (а): 23 раз.
Поблагодарили: 1 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение Rembrant » 18 янв 2010, 23:59

а вот я сейчас не могу понять, как определить, что пользователь вышел. (вход то понятно - по сообщению или регистрировать в своей бд на своём сервере)
Rembrant

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

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение Александр » 19 янв 2010, 00:10

Rembrant
Делать из приложения запрос к серверу каждую минуту (или меньше). Если от пользователя нет запроса, то пользователь вышел.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Люди помогите сделать 4ат в приложении!!!!!!!

Сообщение Rembrant » 19 янв 2010, 16:55

да, наверно только так, хоть это и не очень хорошо. бо если делать запросы нечасто, будет выводиться устаревшая информация, а если часто, можно и сервер положить)
Rembrant

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

Пред.

Вернуться в Создание Flash-приложений ВКонтакте



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

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