2012-05-19 98 views
2

我實際上試圖找到一個解決方案,但沒有,我希望我會在這裏找到一個解決方案!Facebook的連接工作正常,但在Facebook內的問題iframe

我在我的網站上使用facebook連接,一切正常 當我登錄Facebook時,我通過Facebook連接自動登錄到我的網站,反之亦然。

現在我試圖使它成爲一個Facebook應用程序,但我有以下問題: 我嘗試facebook的iframe中運行,但不幸的是我沒有在自動登錄,有時它的工作原理,有時什麼也沒有發生,有時我此消息:使用(無法獲取Facebook的會議服務器可能無法牢固的Facebook連接到用戶檢索信息。)

一些代碼IM:

include 'includes/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => $setting['facebook_appid'], 
    'secret' => $setting['facebook_secret'], 
    'cookie' => true, // enable optional cookie support 
)); 

if ($facebook->getUser()) { 
$facebook_session = 1; 

try { 
    $fb_user = $facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    error_log($e); 
} 

function get_facebook_cookie($app_id, $application_secret) { 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $application_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 

$cookie = get_facebook_cookie($setting['facebook_appid'], $setting['facebook_secret']); 

$open = @file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token']); 

if ($open != FALSE) { 
    $fbdata = json_decode($open); 
    $fb_user = array(); 

    foreach($fbdata as $key => $fbdata2) { 
     $fb_user[$key] = $fbdata2; 
    } 
} 

} 
else { 
    $facebook_session = 0; 
} 

PS:IM當然使用安全畫布URL

請幫忙! 在此先感謝

+0

Im鋼等待你的幫助 – Addicted2Web

回答

0

我的Facebook連接登錄工作正常,但不是在Facebook的帆布/ iFrame內沒有任何工作。我不得不改變我的登錄方法(現在,Facebook的用戶已經能在你的應用程序要自動),什麼基本的工作對我來說是這樣的:How to authorize Facebook app using redirect in canvas?

這是我收到了(我使用CakePHP):

$params = array(
    'scope' => 'email' 
); 

$loginUrl = $facebook->getLoginUrl($params); 
$this->redirect($loginUrl); 

而且我改成了這裏面相當奏效:

$loginUrl = $facebook->getLoginUrl(
     array(
      'canvas' => 1, 
      'fbconnect' => 0, 
      'req_perms' => 'publish_stream' 
     ) 
    ); 
echo '<script>top.location="'.$loginUrl.'";</script>'; 

我不知道如果這確實能幫助你爲你的應用程序似乎比我更復雜一點,但也許你可以解決你的問題與此答案或我鏈接到的帖子。