使用PHP SDK登录Facebook的奇怪行为

时间:2014-02-04 15:42:06

标签: facebook facebook-graph-api

我正在学习Facebook应用程序编程,我已经想到了下一个可行的代码,但是如果我在“do-login.php”文件中注释指示的行,那么当我调用getUser()时index.php“将返回0。

我对此感到好奇,我想也许我做得不好。

此时,我认为没有必要在“do-login.php”文件中创建一个Facebook对象。

最后,请注意“index.php”文件上的链接指向Heroku URL,“do-login.php”文件上的链接指向“apps.facebook.com”URL ...这是我找到代码的唯一方法就是工作。

请问有什么建议吗?我很困惑这一点,我花了一天半的时间来完成这个工作

谢谢!

的index.php

    <?php

    require_once("facebook.php");

    $facebook = new Facebook(array(
        'appId' => THE_APP_ID,
        'secret' => THE_APP_SECRET,
        'fileUpload' => false,          
        'cookie' => true,
        'trustForwarded' => true,
        'allowSignedRequest' => false  
    ));

    $user = $facebook->getUser();

    if( $user ) 
    {
        try 
        {
            $user_info = $facebook->api(THE_USER_ID?fields=id,name,first_name,last_name,email&access_token='.$facebook->getAccessToken());

            echo "getUser(): ".$user."<br/>";
            echo "<b>Name</b>: ".$user_info['name'];
        } 
        catch( FacebookApiException $e ) 
        {
            echo $e->getMessage();
        }
    }
    else
    {     
        $facebook_login_url = $facebook->getLoginUrl(array(
            'scope' => 'email, read_stream, user_interests, user_likes, user_location, user_status',
            'redirect_uri' => 'https://MY-APP.herokuapp.com/do-login.php' 
        ));

        echo "<p><a href='".$facebook_login_url."' target='_top'>Login</a></p>";
    } 
?>

做-login.php中

    <?php

    require_once("facebook.php");

    if( isset($_GET['code']) )
    {
        echo "<p><b>¡¡ Se autorizó la app !!</b></p>";

        $facebook = new Facebook(array(
            'appId' => THE_APP_ID,
            'secret' => THE_APP_SECRET,
            'fileUpload' => false,          
            'cookie' => true,
            'trustForwarded' => true,
            'allowSignedRequest' => false       
            )); 

        // PROBLEM IS that if I comment this line, getUser() will return 0 when called in index.php
        echo $facebook->getUser();

        echo "<p><a href='https://apps.facebook.com/MY-APP/index.php' >Go back</a></p>";
    }
    else
    {
        echo "Error: ".$_GET['error']."<br />";
        echo "Description: ".$_GET['error_description'];
    }
?>

0 个答案:

没有答案