使用getUser()时Facebook功能不返回用户

时间:2011-12-31 19:08:50

标签: php codeigniter facebook

我正在使用Facebook文件登录我创建的应用程序,以便人们可以在我正在处理的网站上通过Facebook登录。我在 Code Igniter 工作,我能够返回用户信息和所有内容。我没有问题。

但是当我进入开发人员方面因为我想在本地测试它并更改了网站网址时,我收到了一些关于我无法记住的错误,我认为错误代码是191我可能是错的。

然后我觉得好不通,所以我把它改回来了,现在我无法在登录时检索任何用户数据。没有抛出任何错误。 Facebook文件中的功能正常,但我似乎无法再次获取用户信息。

我有一个模型用于从登录中获取信息。

class Facebook_model extends CI_Model {

function __construct() {
    parent::__construct();

    $config = array(
        'appId'  => 'XXXX',
        'secret' => 'XXXXX',
        'fileUpload' => true
    );

    $this->load->library('facebook', $config);

    $user = $this->facebook->getUser();


    $profile = null;

    if($user)
    {
        try {
            // Proceed knowing you have a logged in user who's authenticated.
            $profile = $this->facebook->api('/me?fields=id,name,link,email');
        } catch (FacebookApiException $e) {
            error_log($e);
            $user = null;

        }
    }

    $login_params = array(
        'redirect_uri' => (base_url() . 'test'),
        'scope'        => 'email'
    );

    $fb_data = array(
                    'me' => $profile,
                    'uid' => $user,
                    'loginUrl' => $this->facebook->getLoginUrl($login_params),
                    'logoutUrl' => $this->facebook->getLogoutUrl()
                );



    $this->session->set_userdata('fb_data', $fb_data);
}
}

所以在($user = $this->facebook->getUser();)之后我做了一次测试并回复$user并得到 0 。之前我没有。

我做的一个改变是$login_params var。我将 redirect_uri 更改为 localhost ,由于显而易见的原因无效,然后我将其更改回我现在显示的内容。

由于

1 个答案:

答案 0 :(得分:0)

如果用户已登录您的应用程序/网站(http://developers.facebook.com/docs/reference/php/facebook-getUser/),则getUser仅返回用户信息

因此,您应该在模型中处理用户未登录的可能性(为0)并向他显示登录按钮。此外,如果用户为0,则应重置会话信息。