Существует ли какая-нибудь максимальная длина строки flashvars при использовании swfobject и IE8?
Я передаю объект сеанса Facebook во Flash через FlashVars, и в 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';
Сборка FlashVars:
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 }
Так что теперь во Flash, работающем в IE, при попытке доступа к stage.loaderInfo.parameters.session
выдается ошибка нулевого объекта, но он отлично работает в FF.
Должен ли я прибегнуть к запросу сеанса через externalInterface, чтобы избежать перегрузки FlashVars?
РЕДАКТИРОВАТЬ: Так что удаление сеансовой переменной var и запрос ее позже через 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 Dev Tool, он обрезает нагрузку, но копирование внутреннего html элемента в текстовый редактор позволяет вам увидеть все это , Таким образом, строка сеанса, кажется, не повреждена, но все еще не попадает во флэш-память правильно, loaderInfo.parameters.session
существует, но имеет значение null, а 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}