De OpenSocial applicaties worden gerenderd / getoond in een iFrame. Hoe is het nu toch mogelijk om de gegevens die ontvangen worden van OpenSocial te gebruiken in een Flash-movie?
FlashVars
Een methode is het meegeven van deze data als ‘FlashVars’. Dit is echter niet de mooiste manier. Er kan nu weliswaar gecommuniceerd worden van OpenSocial naar Flash, maar hoe kan de Flash-movie nu invloed uitoefenen op OpenSocial?
ExternalInterface
Een mooiere manier (ook beter?) is gebruik te maken van de ExternalInterface die Flash kent. Wanneer in ActionScript de volgende package wordt geimporteerd: <code>flash.external.ExternalInterface</code> dan komen er twee methoden beschikbaar die erg handig zijn om te kunnen communiceren tussen de Flash-movie en de HTML-pagina waarop de movie ge-embed is.
Communicatie ActionScript -> JavaScript
De eerste methode is: ExternalInterface.call("JAVASCRIPT METHOD","PARAMS");
hiermee kan vanuit ActionScript een JavaScript methode worden aangeroepen die op de HTML-pagina staat. Natuurlijk kunnen hier ook de nodige parameters aan meegegeven worden.
Communicatie JavaScript -> ActionScript
De tweede methode is: ExternalInterface.addCallback(JAVASCRIPT METHOD,ACTIONSCRIPT METHOD);
deze methode maakt juist de omgekeerde communicatie mogelijk dus vanuit JavaScript is het nu mogelijk om een ActionScript methode aan te roepen.
Flash Sandbox
Aangezien Flash een redelijk streng sandbox security model kent in verband met cross-side scripting, moeten hier nog de nodige gaatjes in geprikt worden wanneer de Flash-movie en HTML-pagina niet op hetzelfde domain gehost worden. De volgende code zorgt ervoor dat de beperkingen worden opgeheven, gebruik deze code op eigen risico en scherp de regels zoveel mogelijk aan.
Security.allowDomain('*');
Security.allowInsecureDomain("*");
Nu is bi-directionele communicatie tussen de HTML-pagina waarop de Flash-movie ge-embed is en de movie zelf mogelijk.