使用fb:swf所要注意的几点

参考地址: http://wiki.developers.facebook.com/index.php/Fb:swf

1. 当前fb:swf标签使用Flash版本为9.0.115

2. 参数”flashvars”必须小写。Facebook只认小写的”flashvars”,不认”flashVars”.

3. 目前Facebook使用fb:swf标签,它会把flash包装在一个div中,所以尽管embed/object标签不是block-level(关于block_level,请点击这里), 但如果连续的使用<fb:swf>标签,后来的flash内容会盖在前一个的上面。(官方的wiki是这样描述,事实上本人做实验时,却发现它们是纵向排列的,不知道算bug,还是FB已经改了)

4. Facebook把allowScriptAccess设置为none阻止Flash访问外部的JavaScript。如果要引用外部的js,需使用flash的localconnection和fb:fbjs-bridge标签。

5.通过以下步骤验证flash是不是由Facebook页面加载,

a. 通过Application.application.parameters获取所有以fb-sig为前缀的参数(不包括fb-sig本身)

b. 去掉fb-sig前缀

c. 将先前去掉前缀的参数组成param1=value1param2=value2param3=value形式的字符串,以参数名称排序(而不是参数的值),注意不要添加“&”符号。

d. 分别将c中得到字符串和fb-sig参数传给存储了app secret key的app server

e. 在app server端,将app secret key加在c中得到字符串后面,于是得到param1=value1param2=value2param3=valueappsecretkey

f. 使用MD5算法对e返回的字符串进行加密,返回MD5后的哈希值

g. 把f中得到的哈希值与fb_sig进行比较,相等说明flash是由Facebook页面加载的,不等说明是由非Facebook页面加载的。

例:

<fb:swf swfbgcolor=”000000″ imgstyle=”border-width:3px; border-color:white;” swfsrc=’http://www.youtube.com/v/xxxxxxxxxx&#8217; imgsrc=’http://img.youtube.com/vi/xxxxxxxxxx/2.jpg&#8217; width=’340′ height=’270′ />

注意: width和height最好别用百分数,否则会出现很奇怪的现象。如果fb:swf标签用在profile页面imgsrc属性是必须(虽然它有默认值,但估计你不会想用它),因为profile页面中的flash是不会自动播放,需要点击img后才播放。但在canvas页面中flash是自动播放,所以不需要imgsrc。

Advertisements