使用 swfobject 和 IE8 时,flashvars 字符串是否有某种最大长度?
我通过 FlashVars 将 Facebook 会话对象传递到 Flash,在 FF 和 Chrome 中这工作正常。然而,在 IE 中,似乎只传递了一定数量的数据,并且字符串在任意点被截断。这会导致 Flash 错误地解析传入的数据。
获取会话对象的 PHP:
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
if(isset($_REQUEST['signed_request'])) {
$session = json_encode(parse_signed_request($_REQUEST['signed_request'],'<<APP SECRET>>'));
} else {
$session = '';
}
$lang = 'UK';
组装 FlashVar:
var flashvars = {
popUpsAllowed:true,
deployPath:"<<PATH>>",
fb_type:"popup",
fb_environment:"iframe",
fb_app_id:"<<APP ID>>",
fb_redirect:"<<REDIRECT URL>>",
session:'<?php echo $session; ?>',
lang:'<?php echo $lang; ?>',
nobreak:null }
所以现在在 IE 中运行的 Flash 中尝试访问stage.loaderInfo.parameters.session
会引发空对象错误,但在 FF 中可以正常工作。
我是否将不得不求助于通过 externalInterface 请求会话以避免 FlashVars 过载?
编辑:因此将会话变量带走并稍后通过 ExternalInterface 请求它是可行的,但我想知道是 IE 还是 ActiveX 插件有问题。
会话数据如下所示(一些数字字符已更改):
{"algorithm":"HMAC-SHA256","expires":1304334000,"issued_at":1304327676,"oauth_token":"100076334000000|0.kNHAz0AST_cq0jo7WLWldQ__.0000.0004334000.1-000000000|UIy7h_0NFYByedFUGDkxOntP8Sg","user":{"country":"gb","locale":"en_GB","age":{"min":21}},"user_id":"000000000"}
Edit2:*所以我是个白痴,当您在 IE 开发工具中查看代码时,它确实会减少负载,但是将元素的内部 html 复制到文本编辑器中可以让您看到整个内容。所以会话字符串似乎没有损坏,但它仍然没有正确进入闪存,loaderInfo.parameters.session
存在但为空,并且loaderInfo.parameters.lang
未定义。
这是 FlashVars 的实际浏览器输出:
var flashvars = {
popUpsAllowed:true,
deployPath:"http://www.mydomain.com",
fb_type:"popup",
fb_environment:"iframe",
fb_app_id:"00000000000000000000000000000000",
fb_redirect:"http://apps.facebook.com/myApp/iframe_popup.php",
session:'{"algorithm":"HMAC-SHA256","expires":1304416800,"issued_at":1304412506,"oauth_token":"000176004606000|2.01KBxkU8muE0AeIQSNlXLg__.3000.1304400800.0-500428000|_KXAwxTxzGSmasOu0KlNFHQ0d7A","user":{"country":"gb","locale":"en_GB","age":{"min":21}},"user_id":"000000000"}',
lang:'UK',
nobreak:null}