ActionScript 3 - Facebook API

Kategori: Diverse | Kommentarer (0)
Gemt: 2009-03-31 11:31


Ved ikke helt om det er en nyhed, eller om den har været der længe, men fakta er i hvert fald at der findes et ActionScript 3 Client Library til Facebook API’en, som gør det meget nemmere at lave direkte integration mellem Flash og Facebook.

I de Flash-ting vi selv hidtil har lavet, har jeg typisk sendt en del af kaldene gennem php, eller simpelthen lavet mellemsider i html, fordi det var langt det hurtigste, men med ActionScript 3 Client Librariet så må det siges at være blevet en hel del nemmere at lave det direkte i Flash.

Du kan finde en beskrivelse af librariet her:
Adobe Flash Platform & Facebook Platform

Og det kan downloades herfra:
Google Code - Facebook ActionScript API


Tags: , ,

Bryd tavsheden - Facebook applikation

Kategori: Egne projekter | Kommentarer (0)
Gemt: 2009-02-16 12:37


Bryd tavshedenNu er den Facebook applikation som jeg har haft omtalt i et par andre artikler gået live, så det syntes jeg fortjente et lille link.

Kort fortalt er navnet på kampagnen “Bryd tavsheden” og formålet er at skabe opmærksomhed omkring det, at det er vigtigt at snakke om vold for at forebygge det.
Til det formål har vi lavet en Facebook applikation hvor man kan lave sig selv om til en “voldsramt”, enten ved at bruge et billede man allerede har på Facebook, uploade et nyt eller tage et med sit webcam.
Efterfølgende kan man så tilføje et blåt øje, en lynlås og en rift.

Den er som sagt lige gået i luften, så nu går vi bare og er spændte på hvor godt den spreder sig - er jo aldrig helt til at vide med den slags virale ting.

Prøv den gerne, kom med kommentarer og husk at invitér alle dine venner :-)

Bryd Tavsheden


Facebook aplikationer og Flash - navigateToUrl drilleri

Kategori: Tips og tricks | Kommentarer (2)
Gemt: 2009-01-29 12:03


Vi er i øjeblikket i fuld gang med at lave en Facebook aplikation der i høj grad benytter sig af Flash (mere om den senere), og i den forbindelse er jeg stødt på et par mindre besværligheder.

Den første og største var, at Facebook når man bruger FBML (fb:swf) automatisk sætter alle Flash-objekter til at kører med allowScriptAccess=never.

Det er en sikkerhedsbegrænsning de har sat på, for at alle vi udviklere ikke uhæmmet skal kunne kalde en masse javascript-funktioner og dermed få adgang til data som vi ikke skal have adgang til.
Problemet med det er så, at det også sætter en række begrænsninger for funktioner som man ikke nødvendigvis ved bruger javascript, eksempelvis navigateToUrl, som pludselig er begrænset til kun at kunne bruge _blank, og det er jo helt umuligt at lave en lækker aplikation i Flash, hvis alle sider åbner i nye vinduer.

Det ved Facebook også godt og derfor er der en metode til at komme uden om problemet, nemlig ved at bruge en Flash-fil som Facebook har lavet som en bro.
Lyder det indviklet? Det er det også lidt og det tog mig noget tid at lure, så derfor kommer opskriften her.

Før skal man indsætte den Facebook-bro som man senere skal tilgå via LocalConnection:

<fb:fbjs-bridge/>
<fb:swf swfbgcolor="FFFFFF"
	swfsrc='http://www.dinurl.dk/din.swf'
	width='760'
	height='600'
	/>
<script> <!-- --></script>

Dernæst, så skal man bruge en funktion som tilgår broen og som kan bruges som erstatning for navigateToUrl, selv lavede jeg denne lille klasse, men det kan gøres på mange måder:

import flash.net.LocalConnection;
import flash.display.LoaderInfo;

public class FacebookUtil {
	private var connection:LocalConnection;
	private var connectionName:String;
	private var baseUrl:String = "http://apps.facebook.com/dinaplikation/";

	public function init(_loaderInfo:LoaderInfo):void {
		connection = new LocalConnection();
		connectionName = _loaderInfo.parameters.fb_local_connection;
	}

	function go(_url:String):void {
		if (connectionName) {
			connection.send(connectionName,
			"callFBJS",
			"document.setLocation",
			[baseUrl + _url]
			);
		} else {
			trace("FacebookUtil.go: No connection");
		}
	}
}

Som du kan se, så har den en init funktion, og det er fordi at Facebook som standard sender nogle værdier med til alle fb:swf objekter, og nogle af dem har vi brug for, så derfor skal klassen klargøres inden man kan kalde funktionen go, som det hele drejer sig om:

var Facebook:FacebookUtil = new FacebookUtil();

Facebook.init(LoaderInfo(this.root.loaderInfo));

Facebook.go("minside.php");

I den klasse jeg lige har lavet er der ikke mulighed for at sætte target, da jeg kun havde brug for _self, men det kan den sagtens udvides med.

Håber det kan gøre vejen til din første Facebook aplikation i Flash lidt nemmere :-)