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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
VIP
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10

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

Сообщение VIP »

В этом ты прав но ты же не администратор сайта!!! Так что уникальность картинок себя оправдывает!!! Я пока учусь!!!
venomich
Сообщения: 9
Зарегистрирован: 28 ноя 2009, 20:25

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

Сообщение venomich »

Ну поэтому и только проверено =)
Аватара пользователя
Deniska
Сообщения: 653
Зарегистрирован: 30 окт 2009, 00:07

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

Сообщение Deniska »

Сразу говорю ВСЁ не проверял! Если найдёте ошибки (а они кажеться тут есть) то будем исправлять вместе! Писал что бы люди поняли основную идею
Ну что же начнем:
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 раз.
VIP
Сообщения: 252
Зарегистрирован: 24 ноя 2009, 18:10

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

Сообщение VIP »

+++
Последний раз редактировалось VIP 05 дек 2009, 19:15, всего редактировалось 1 раз.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

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

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

Сообщение VIP »

всё равно не работает чат, я в поисках идеи потом залью когда будет работать
Rembrant
Сообщения: 29
Зарегистрирован: 18 янв 2010, 23:45

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

Сообщение Rembrant »

а вот я сейчас не могу понять, как определить, что пользователь вышел. (вход то понятно - по сообщению или регистрировать в своей бд на своём сервере)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

Rembrant
Делать из приложения запрос к серверу каждую минуту (или меньше). Если от пользователя нет запроса, то пользователь вышел.
Rembrant
Сообщения: 29
Зарегистрирован: 18 янв 2010, 23:45

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

Сообщение Rembrant »

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