2011-07-26 57 views
0

我有一个名为fbmain.php的文件,它是我的Facebook应用程序的认证部分。
但它不显示认证窗口?Facebook身份验证窗口不显示?

//fbmain.php 

<?php 
    //facebook application 
    //set facebook application id, secret key and api key here 
    $fbconfig['appid' ] = "MY_APP_ID"; 
    $fbconfig['secret'] = "MY_APP_SECRET"; 

    $uid   = null; //facebook user id 

    try{ 
     include_once "facebook.php"; 
    }catch(Exception $o){ 
     echo '<pre>'; 
     print_r($o); 
     echo '</pre>'; 
    } 
    // Create our Application instance. 
    $facebook = new Facebook(array(
     'appId' => $fbconfig['appid'], 
     'secret' => $fbconfig['secret'], 
     'cookie' => true, 
    )); 

    //Facebook Authentication part 
    $session = $facebook->getSession(); 

    $loginUrl = $facebook->getLoginUrl(
      array(
      'canvas' => 1, 
      'fbconnect' => 0, 
      'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history,user_likes,user_photos' 
      ) 
    ); 

    if (!$session) { 
     echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
     exit; 
    } 
    if ($session) { 
    echo "<br/>session ok"; //It create a session and disply 'session ok' string 
     try { 
      $uid  = $facebook->getUser(); 
     } catch (FacebookApiException $e) { 
      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
      exit; 
     }  
    } 

?> 

任何人都可以帮助我吗?

回答

0

您正在使用哪个版本的PHP-SDK?

我认为你可以摆脱getSession()并只使用getUser()

改变你的代码如下,然后再试一次..

$uid  = $facebook->getUser(); 

if ($uid) { 
// do some api calls or something else 
} 
else 
{ 
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
}  
的index.php中

否则只是包括你fbmain.php并使用图像按钮,您可以链接$ loginurl ..

+0

它不工作的朋友。它获得变量$ uid的价值,并去如果loop.Never去其他循环,并没有显示身份验证窗口。我用新创建的应用程序尝试了这一点(我正在使用3.0版本的PHP-SDK) – Roshanck