Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.08.2010, 07:22
ChromeUS вне форума Посмотреть профиль Отправить личное сообщение для ChromeUS Найти все сообщения от ChromeUS
  № 1  
Ответить с цитированием
ChromeUS

Регистрация: Aug 2010
Адрес: Асбест
Сообщений: 2
Question Incorrect Signature. Помогите новичку в VK API!

Здравствуйте!
В AS3 я не новичок, занимаюсь им довольно долго, но вот с VK API у меня возникла проблема.
(знаю что тема не раз обсуждалась, но пожалуйста, не пинайте. Способы в существующих темах не помогли)
Привожу исходник всего приложения:
Код AS3:
package {
  import flash.display.Sprite;
 
  import flash.text.*;
  import flash.events.*;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.display.*;
  import vk.APIConnection;
  import vk.events.*;
  import vk.ui.VKButton;
  import utils.MD5;
 
  public class TestApp extends Sprite {
	  private var api_id:Number = app_key; // id  приложения
      private var api_secret:String="app_secret"; // секретный ключ
      private var externalXML:XML;
      private var loader:URLLoader = new URLLoader();
      private var viewer_id:Number;
      private var sig:String;
      private var uid:String;
	  private var method:String = "getUserInfo";
	  private var test_mode:Number = 1;
	  private var v:String = "2.0";
 
    public function TestApp() {
         var params:Object=LoaderInfo(root.loaderInfo).parameters;
         viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
		 //getProfile(viewer_id);
    	if (stage) init();
    	else addEventListener(Event.ADDED_TO_STAGE, init);
    }
    private function init(e: Event = null): void {
//var strtosig:String = viewer_id+'api_id='+api_id+'fields=first_namemethod=getProfilesuids='+viewer_id+'v=2.0'+api_secret;
//sig=MD5.encrypt(strtosig);
//var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+viewer_id+"&fields=first_name,last_name&v=2.0&sig="+sig);
sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilestest_mode=1uids='+uid+'v=2.0'+api_secret);
var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&fields=bdate,photo_big&method=getProfiles&test_mode=0&uids="+uid+"&v=2.0&sig="+sig);
         loader.load(request);
         loader.addEventListener(Event.COMPLETE, init);
	externalXML=new XML(loader.data);
	var addApp: VKButton = new VKButton('Настройки приложения');
		addApp.x = 472;
		addApp.y = 8;
		addChild(addApp);
		var btn: VKButton = new VKButton('Посчитать');
    	btn.x = 284;
    	btn.y = 166;
		var uname = externalXML..furst_name;
    	addChild(btn);
		hello.text = "Здравствуйте, " + uname;
    	btn.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		MD1.text = MD5.encrypt(txt_Data.text);
    	});
		addApp.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		VK.callMethod(showSettingsBox, 0);
    	});
    }
  }
}
Выдает некорректную сигнатуру...
В чем может быть проблема?
Мое мнение: тут ведь вроде нужен хеш, а не сумма? Насколько я себе представляю - это разные вещи...
НО! Попробовал так:
Код AS3:
package {
  import flash.display.Sprite;
 
  import flash.text.*;
  import flash.events.*;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.display.*;
  import vk.APIConnection;
  import vk.events.*;
  import vk.ui.VKButton;
  import com.adobe.crypto.MD5;
 
  public class TestApp extends Sprite {
	  private var api_id:Number = app_id; // id вашего приложения
      private var api_secret:String="app_secret"; // секретный ключ
      private var externalXML:XML;
      private var loader:URLLoader = new URLLoader();
      private var viewer_id:Number;
      private var sig:String;
      private var uid:String;
	  private var method:String = "getUserInfo";
	  private var test_mode:Number = 1;
	  private var v:String = "2.0";
 
    public function TestApp() {
         var params:Object=LoaderInfo(root.loaderInfo).parameters;
         viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
		 //getProfile(viewer_id);
    	if (stage) init();
    	else addEventListener(Event.ADDED_TO_STAGE, init);
    }
    private function init(e: Event = null): void {
sig=MD5.hash(viewer_id+'api_id='+api_id+'fields=last_name, furst_namecids=1method=getProfilestest_mode=1uids='+uid+'v=2.0'+api_secret);
var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&fields=last_name, furst_name&cids=1&method=getProfiles&test_mode=0&uids="+uid+"&v=2.0&sig="+sig);
         loader.load(request);
         loader.addEventListener(Event.COMPLETE, init);
	externalXML=new XML(loader.data);
	var addApp: VKButton = new VKButton('Настройки приложения');
		addApp.x = 472;
		addApp.y = 8;
		addChild(addApp);
		var btn: VKButton = new VKButton('Посчитать');
    	btn.x = 284;
    	btn.y = 166;
		var uname = externalXML..furst_name;
    	addChild(btn);
		hello.text = "Здравствуйте, " + uname;
    	btn.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		MD1.text = MD5.hash(txt_Data.text);
    	});
		addApp.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		VK.callMethod(showSettingsBox, 0);
    	});
    }
  }
}
.......
Не помогло(((
Буду очень признателен за помощь


Последний раз редактировалось ChromeUS; 02.08.2010 в 07:24. Причина: Забыл еще знак "=", но все равно не робит
Старый 02.08.2010, 13:15
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
параметры внутри хэша должны идти в алфовитном порядке!!

Код AS3:
private function generateSig():String
		{
			var signature = "";
			var params:Object = this.variables;
			var sorted_array: Array = new Array();
			for (var i: String in params) {
				sorted_array.push(i + "=" + params[i]);
 
			}
			sorted_array.sort();
			for (var key in sorted_array) {
        		signature += sorted_array[key];
      		}
 
      		signature = this.viewer_id + signature + this.secret_key;
      		return MD5.encrypt(signature);
		}

Старый 02.08.2010, 13:55
ChromeUS вне форума Посмотреть профиль Отправить личное сообщение для ChromeUS Найти все сообщения от ChromeUS
  № 3  
Ответить с цитированием
ChromeUS

Регистрация: Aug 2010
Адрес: Асбест
Сообщений: 2
Незнаю почему, но опять ошибка!
Не работает.
Может я чего неверно сделал?
Код AS3:
package {
  import flash.display.Sprite;
 
  import flash.text.*;
  import flash.events.*;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.display.*;
  import vk.APIConnection;
  import vk.events.*;
  import vk.ui.VKButton;
  import vk.gui.*;
  //import com.adobe.crypto.MD5;
  import vk.api.MD5;
 
  public class TestApp extends Sprite {
	  private var api_id:Number = 1915617; // id вашего приложения
      private var api_secret:String="4wCVuJQfxB"; // секретный ключ
      private var externalXML:XML;
      private var loader:URLLoader = new URLLoader();
      private var viewer_id:Number;
      private var sig:String;
      private var uid:String;
	  private var method:String = "getUserInfo";
	  private var test_mode:Number = 1;
	  private var v:String = "2.0";
private function generateSig():String
		{
			var signature = "";
			var params:Object=LoaderInfo(root.loaderInfo).parameters;
			var sorted_array: Array = new Array();
			for (var i: String in params) {
				sorted_array.push(i + "=" + params[i]);
 
	}
			sorted_array.sort();
			for (var key in sorted_array) {
        		signature += sorted_array[key];
    }
 
      		signature = this.viewer_id + signature + this.api_secret;
      		return MD5.encrypt(signature);
}
 
    public function TestApp() {
		sig = generateSig();
         var params:Object=LoaderInfo(root.loaderInfo).parameters;
         viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
		 //getProfile(viewer_id);
    	if (stage) init();
    	else addEventListener(Event.ADDED_TO_STAGE, init);
    }
//      private function getProfile(uid):void { // функция получения профиля
//         sig=MD5.encrypt(viewer_id+"api_id="+api_id+"method="+method+"test_mode="+test_mode+"v="+v+api_secret);
//         var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method="+method+"&uid="+viewer_id+"&v=2.0&sig="+sig);
//         loader.load(request);
//         loader.addEventListener(Event.COMPLETE, init);
//      }
    private function init(e: Event = null): void {
//var strtosig:String = viewer_id+'api_id='+api_id+'fields=first_namemethod=getProfilesuids='+viewer_id+'v=2.0'+api_secret;
//sig=MD5.encrypt(strtosig);
//var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+viewer_id+"&fields=first_name,last_name&v=2.0&sig="+sig);
//sig=MD5.hash(viewer_id+'api_id='+api_id+'fields=last_name, furst_namecids=1method=getProfilestest_mode=1uids='+uid+'v=2.0'+api_secret);
var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&fields=last_name, furst_name&cids=1&method=getProfiles&test_mode=0&uids="+uid+"&v=2.0&sig="+sig);
         loader.load(request);
	externalXML=new XML(loader.data);
	var addApp: VKButton = new VKButton('Настройки приложения');
		addApp.x = 472;
		addApp.y = 8;
		addChild(addApp);
		var btn: VKButton = new VKButton('Посчитать');
    	btn.x = 284;
    	btn.y = 166;
		var uname = externalXML..furst_name;
    	addChild(btn);
		hello.text = "Здравствуйте, " + uname;
    	btn.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		MD1.text = MD5.encrypt(txt_Data.text);
			//yy.text = "http://api.vkontakte.ru/api.php?api_id="+api_id+"&fields=last_name, furst_name&cids=1&method=getProfiles&test_mode=0&uids="+uid+"&v=2.0&sig="+sig;
    	});
		addApp.addEventListener(MouseEvent.CLICK, function(e: Event):void{
    		callMethod("showSettingsBox");
    	});
    }
  }
}

Старый 02.08.2010, 15:44
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 4  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Код AS3:
var params:Object=LoaderInfo(root.loaderInfo).parameters;
это не правильно , ты параметрам передаешь URLVariables!

Код AS3:
public function VkRequest( action: String , viewer_id:int , params: Object = null)
		{
			this.viewer_id = viewer_id;
			this.variables = new URLVariables();
			this.variables.method = action;
			this.variables.api_id = this.api_id;
			this.variables.v = "2.0";
 
			this.variables.test_mode= "1";
 
			for (var i: String in params) {
				this.variables[i] = params[i];				
			}
 
			this.variables.sig = generateSig();
 
			request = new URLRequest( this.vk_url );
			request.method = URLRequestMethod.POST;
			request.data = this.variables;
 
			loader = new URLLoader();
		}
		public function send()
		{
			loader.addEventListener( Event.COMPLETE, onRequestComplete );
 
			loader.addEventListener( ErrorEvent.ERROR, onRequestComplete );
			loader.load( this.request );
		}
 
		private function generateSig():String
		{
			var signature = "";
			var params:Object = this.variables;
			var sorted_array: Array = new Array();
			for (var i: String in params) {
				sorted_array.push(i + "=" + params[i]);
 
			}
			sorted_array.sort();
			for (var key in sorted_array) {
        		signature += sorted_array[key];
      		}
 
      		signature = this.viewer_id + signature + this.secret_key;
      		return MD5.encrypt(signature);
		}
 
		public function onRequestComplete( e: Event )
		{
			trace(e.target.data);
		}

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
4 error , vk
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.