Facebook身份验证窗口不显示?

时间:2011-07-26 07:12:50

标签: php facebook facebook-graph-api

我有一个名为fbmain.php的文件,它在我的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;
        }       
    }

?>

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分: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 ..