2012-03-01 5 views
0

내 앱을 Facebook과 통합하는 데 문제가 있습니다. $ _REQUEST [ 'code']를 읽으려고합니다. 그것은 URL에 있지만 현재 빈 상태로 돌아갑니다. 내 코드가 Facebook iFrame에 있기 때문에 아마. iFrame 내에서 상위 URL 쿼리 문자열을 읽을 수있는 방법이 있습니까?상위 URL 쿼리 문자열을 읽을 수 없습니다.

답변

1

작동중인 앱을 만들려면 해당 정보에 액세스 할 필요가 없습니다.

캔버스 앱에서 signed_request 매개 변수 인 Facebook HTTP 게시물을 디코딩하면됩니다. PHP에서는 디코딩이 매우 쉽습니다.

자세한 내용은 http://developers.facebook.com/docs/authentication/signed_request/을 참조하십시오.

function parse_signed_request($signed_request, $secret) { 
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data 
    $sig = base64_url_decode($encoded_sig); 
    $data = json_decode(base64_url_decode($payload), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
    error_log('Unknown algorithm. Expected HMAC-SHA256'); 
    return null; 
    } 

    // check sig 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
    error_log('Bad Signed JSON signature!'); 
    return null; 
    } 

    return $data; 
} 

function base64_url_decode($input) { 
    return base64_decode(strtr($input, '-_', '+/')); 
} 

PHP SDK를 사용하는 경우 SDK가 이러한 어려운 작업을 수행합니다. 참고 : https://github.com/facebook/php-sdk/

관련 문제