Показать сообщение отдельно
Старый 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. Причина: Забыл еще знак "=", но все равно не робит