2011-08-24 163 views
0

我有一个简单的Facebook应用程序,用于在旧的API中工作。这是一个iFrame应用程序,无论我尝试什么,我都无法使用新API获取用户会话。这是我现在的代码。iFrame应用程序不再工作

error_reporting(E_ALL); 

require 'facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'xxxx', 
    'secret' => 'xxxx', 
    'cookie' => true, 
)); 

$session = $facebook->getSession(); 
if (!$session) 
{ 
//echo "Failed. No session.<br />"; 

    $url = $facebook->getLoginUrl(array(
       'canvas' => 1, 
       'fbconnect' => 0, 
       'next'=>'http://www.facebook.com', 
       'cancel_url' => 'http://www.facebook.com' 
      )); 

    //echo "<script type='text/javascript'>top.location.href = '$url';</script>"; 
    echo "<a href='".$url."' target='_blank'>First time using this App? Click here to connect it to your Facebook.</a>"; 

} 
else { 

    try { 

     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 

     $updated = date("l, F j, Y", strtotime($me['updated_time'])); 

     echo "Hello " . $me['name'] . "<br />"; 
     echo "You last updated your profile on " . $updated; 

    } catch (FacebookApiException $e) { 

     echo "Error:" . print_r($e, true); 

    } 
} 

我试过各种东西,但$ session永远不会返回(点击链接后)。我正在使用正确的appID/secret/facebook.php,但如果路径始终落入!$会话中。我究竟做错了什么?

+0

这可能与http://facebook.stackoverflow.com/questions/7181212/facebook-https-php-mistake有关吗? –

+0

^我不这么认为,我没有在我的网站/域上使用SSL。 – Zenoxio

回答

0

使用PHP-SDK的新版本(3.1.1):)

代码使用旧的SDK(在新的没有任何的getSession方法),你可能有迁移设置“OAuth的迁徙”设置为true。

+0

我会试一试。有什么我可以做的测试,并确保这是问题吗?我不想重写代码,仍然觉得不起作用。 – Zenoxio

+0

您可以尝试更改您的迁移应用设置。但是,无论如何,你必须改用新的sdk,直到2011年10月1日,现在好多了。 –

相关问题