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 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>
З.Ы. как дебажить нормально такие вещи ?