2011-04-28 7 views
0

swfobject와 IE8을 사용할 때 flashvars 문자열의 최대 길이가 있습니까?최대 FlashVars 길이는 IE8입니까?

저는 FlashVars를 통해 Facebook 세션 객체를 Flash로 전달하고 FF 및 Chrome에서는 정상적으로 작동합니다. IE에서는 몇 가지 데이터 만 전달되고 임의의 지점에서 문자열이 잘린 것처럼 보입니다. 이로 인해 Flash에서 들어오는 데이터를 잘못 파싱합니다.

세션 개체를 가져옵니다 PHP : 플래시 stage.loaderInfo.parameters.session가 null 객체의 오류가 발생 액세스를 시도하는 IE에서 실행에 그래서 지금

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 } 

하지만 잘 작동 :

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를 FF로.

FlashVars에 과부하가 걸리지 않도록 externalInterface를 통해 세션을 요청해야합니다.

EDIT : 그래서 Session 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 개발자 도구에서 코드를 볼 때 그래서 바보, 그것은 수행하고있어 작물 오프로드 , 요소의 내부 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} 
+0

$ 세션을 이스케이프 처리합니까? –

+0

또 다른 것은 렌더링 된 HTML을보고 무엇이 세션에 할당되는지 봅니다. –

+0

IE 개발 도구를 살펴본 결과 세션 문자열의 일부를 보여 주지만 특정 길이로 멈 춥니 다. dev 도구가 전체 라인을 보여주지 않는 것처럼 보이지만 세션이 lang이어야하고 세션이 null 인 경우 loaderInfo.parameters의 마지막 매개 변수로 표시됩니다. 이는 IE가 라인을 자르고 있음을 나타냅니다. 필자는 Flash에서 콜백을 사용하여 데이터를 설정했기 때문에 이스케이프가 도움이되지 않는다고 생각합니다. 문제없이 IE에서 이스케이프 처리되지 않은 이스케이프 처리를 통과합니다. – shanethehat

답변

3

urlencode해야합니다. 내가 생각하는 파이프와 콜론은 당신의 문제입니다. Flashvars는 쿼리 문자열에서 swf를 지나치게됩니다. 그것은 파이프 또는 결장을 렌더링 할 수 없기 때문에 IE는 도구 모음 바 깨고 있었다.

2

모든 브라우저가 64킬로바이트 (65,535 바이트)에 길이의 문자열 크기를 지원합니다. 모든 브라우저에서 작동하려면 FlashVars가 OBJECT 및 EMBED 태그에 지정되어야합니다. Adobe의 FlashVars에 대한 내용은 Using FlashVars to pass variables to a SWF입니다.

+0

보세요, 그게 여기 있습니다. 총 길이는 64KB에 가깝지 않으며 swfobject를 사용하면 플래시 막대가 올바르게 배치됩니다. loaderInfo.parameters 객체를 추적 할 때 세션 전에 vars가 올바르게 채워지고 세션 이후의 var가 나타나지 않습니다. – shanethehat

관련 문제