Авторизация OAuth2 на стороннем сайте из Flash приложения.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Авторизация OAuth2 на стороннем сайте из Flash приложения.

Сообщение GrafMine »

Имеется следующая ситуация:
1. Есть какой-то сайт, на одной из его страничек имеется flash приложение.
2. Заходя в это flash приложение, необходимо чтобы внутри него пользователь мог авторизоваться через соц. сети, например, Вконтакте (именно внутри флэшки).

Мне посоветовали сделать так : "Сделать авторизацию из JS по обычной схеме, а с флешкой связать мостом через ExternalInterface".

звучит оч легко, ну на деле головняка хватает.
С прочитанного в инете я сделал приблизительные предположение действий которые нужно сделать :
1.в флеше внутри слушателе кнопки по нажатию прописать вызов обращения к JS методу
2.написать html страничку с JS скриптами где будет тот метод который я обращаюсь со флеша
3.внутри метода написать авторизацию вконтакте
4.полученные данные отослать обратно во флеш
5. с полученними данными делать что угодно

Вот Мои старания кодом :
Main.as

Код: Выделить всё

 addChild(btn).x=100;btn.addEventListener(MouseEvent.MOUSE_DOWN, openVKAouth);addChild(btn).x=200;btn.addEventListener(MouseEvent.MOUSE_DOWN, getVK); private function getVK(e:MouseEvent):void {        //пытаемся забрать полученную инфу        var result:Object = ExternalInterface.call("getVKData");        trace(result);        textField.text = String(result.name)+" = "+ String(result.length);    }     private function openVKAouth(e:MouseEvent):void {        if (ExternalInterface.available){            //стартуем авторизацию            var result:String = ExternalInterface.call("startLogin");            trace("result> "+result);            textField.text = String(result);        }else{            textField.text = "ExternalInterface.available = false";        }     } 
вот что в html :

Код: Выделить всё

 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>example</title></head><script src="//vk.com/js/api/openapi.js" type="text/javascript"></script><script language="JavaScript">     var vk = {}    // adds two numbers, and sends the result back to ActionScript     function startLogin()     {         loginVK();        return "start login";     }     function loginVK()     {         VK.init({apiId:4453251});        load();    }     function load(){        VK.Auth.login(authInfo, 16);        if(response.session){ // check session activate            vk = response.session.user;            alert('user: '+response.session.mid);        }else {            alert("session is false!");        }    }    function getVKData(){        return vk;     }</script></head><body bgcolor="#ffffff">    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="250" height="150" id="VK_autorization" align="middle">    <param name="allowScriptAccess" value="always" />    <param name="allowFullScreen" value="false" />    <param name="movie" value="VK_autorization.swf" />    <param name="quality" value="high" />    <param name="bgcolor" value="#ffffff" />       <embed src="VK_autorization.swf" quality="high" bgcolor="#ffffff" width="250" height="150" name="VK_autorization" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />    </object>    <br/>  </body></html> 
ExternalInterface.available = true , следуя из этого значит он видет что к флешке подключен JS ну вот на запросы реагирует null , я так понимаю не проходит авторизация.
З.Ы. как дебажить нормально такие вещи ?
Ответить