Facebook php sdk 3.2.2 GetUser()总是返回0

时间:2013-03-29 08:41:38

标签: php facebook sdk

我整天都在寻找答案..但似乎没有什么能解决它。 我想每个版本都有不同的问题......

嗯,这很简单,我有这个代码:

    <?php
    include_once("facebook.php"); //include facebook SDK

    ######### edit details ##########
    $appId = '****'; //Facebook App ID
    $appSecret = '****'; // Facebook App Secret
    ##################################

    //Call Facebook API
    $facebook = new Facebook(array(
      'appId'  => $appId,
      'secret' => $appSecret,
      'cookie' => true
    ));

    $fbuser = $facebook->getUser();


    if ($fbuser) {
    // Do Something

    }
    else{               
    //Show login button for guest users
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
    echo '<a href="'.$loginUrl.'"><img src="images/facebook-login.png" border="0"></a>';
    }
    ?>

我每次都获得0。 当我去“登录Facebook”并且我没有登录时,我得到了facebook登录屏幕。 当我去“登录facebook”并且我登录时,facebook会将我重定向到我的页面,我再次获得用户获得0。

我想在我的localhost上运行它,也许这就是问题?

希望有人能帮忙.. THX

2 个答案:

答案 0 :(得分:5)

我使用相同的简单登录脚本遇到了类似的问题。我几乎尝试了什么但没有任何帮助。 (奇怪的是,在一切正常的前一天)。

所以开始调试“base_facebook.php”,发现函数 getAccessTokenFromCode 没有异常(静默)。

事实证明_oauthRequest的响应给出了错误消息回复而不是预期的令牌回复:

$access_token_response =
        $this->_oauthRequest(
          $this->getUrl('graph', '/oauth/access_token'),
            $params = array ('client_id' => $this->getAppId(),
                             'client_secret' => $this->getAppSecret(),
                             'redirect_uri' => $redirect_uri,
                             'code' => $code));

所以通过添加echo $ access_token_response;直接在这个功能之后找到了我的问题。

响应错误是我的应用配置为原生/桌面应用。 我将其更改为 Internet 之后的getUser();给出了正确的用户ID。

我希望这会有所帮助。

答案 1 :(得分:-1)

试试这个,这是我的同学写的一段代码,因为我正在努力使用FB登录。为我工作。

<?php
    session_start();
    require_once 'facebook/facebook.php';

    $facebook = new Facebook(array(
      'appId'  => '3525325', <- fake appID ofcourse, enter your own
      'secret' => 'fauuf983f9f', <- fake secret, enter your own
    ));

    $user = $facebook->getUser();

    if ($user) {
      try {
        $_fb['user'] = $facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $_fb['user'] = null;
      }
    }

    if ($user) 
    {
        $_fb['logouturl'] = $facebook->getLogoutUrl();
        $_fb['authed'] = true;

        echo '<h1>Logged in</h1>';
        echo 'Fbid: '.$user;

        echo "<br /><br /><pre>";
        print_r($_fb['user']);
        echo "</pre>";
    } 
    else 
    {
      $_fb['loginurl'] = $facebook->getLoginUrl(array('scope' => 'email'));
      $_fb['authed'] = false;
      echo '<a href="'.$_fb['loginurl'].'">Login with Facebook</a>';
    }
?>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
    </body>
</html>

希望它对你有用。祝你好运:) Facebook登录给我带来了很大的烦恼:p