3

我正在使用带有 Codeigniter 的 Facebook 并且工作正常但突然停止工作,Facebook 是否改变了任何东西

脸书功能

public function takofacebook($page = TRUE, $name = TRUE) {

    if (isset($page) and (($page != TRUE) or ($page != 1)) and isset($name)) {
        $data['page'] = $page;
        $data['name'] = $name;
    }

    $this -> load -> library('fb');
    if (!$this -> fb -> is_connected()) {
        redirect($this -> fb -> login_url(current_url()));
    }

    $fb_user = $this -> fb -> client -> api('/me');

    if (empty($fb_user)) {
        $error = "FACEBOOK LOGIN FAILED - USER US EMPTY. FILE: " . __FILE__ . " LINE: " . __LINE__;
        $this -> session -> set_flashdata('register_error', $error);
    } else {
        $this -> user -> set_facebook_id($fb_user['id']);
        $user = $this -> user -> get_by_facebook();
        if (!empty($user) && !empty($user -> id) && is_numeric($user -> id)) {

            //TODO: Make things a bit more secure here
            //Login & Redirect home

            $this -> _login($user -> id, 'facebook');
            $this -> load -> view('users/redirect_home2', $data);
            return;
        }
    }
    //Go to the registeration page
    $this -> load -> view('users/redirect2', array('method' => 'facebook'));
}

/**
 * Logs user in with facebook
 */

 //tako facebook
public function zangafacebook() {



    $this -> load -> library('fb');
    if (!$this -> fb -> is_connected()) {
        redirect($this -> fb -> login_url(current_url()));
    }

    $fb_user = $this -> fb -> client -> api('/me');

    if (empty($fb_user)) {
        $error = "FACEBOOK LOGIN FAILED - USER US EMPTY. FILE: " . __FILE__ . " LINE: " . __LINE__;
        $this -> session -> set_flashdata('register_error', $error);
    } else {
        $this -> user -> set_facebook_id($fb_user['id']);
        $user = $this -> user -> get_by_facebook();
        if (!empty($user) && !empty($user -> id) && is_numeric($user -> id)) {

            //TODO: Make things a bit more secure here
            //Login & Redirect home

            $this -> _login($user -> id, 'facebook');
            $this -> load -> view('users/redirect_home3');
            return;
        }
    }
    //Go to the registeration page
    $this -> load -> view('users/redirect3', array('method' => 'facebook'));
}
4

1 回答 1

1

我在我的 CodeIgniter 网站上测试了 Facebook 的官方 php sdk,它运行良好。$fb_user 是空的吗?错误在哪里?你在使用 Facebook 的官方 PHP SDK 吗?有很多变量可以弄清楚这里出了什么问题。就像 ifaour 建议的那样,如果您还没有,请在此处使用官方 php sdk:https ://github.com/facebook/facebook-php-sdk/tree/master/src

将库目录中的文件拖放并正常调用

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

然后你可以像这样获取 facebook 数据:

$fb_user = $this -> facebook -> api('/me');

再次我不确定你的错误在哪里所以你在这里缺少一个参数吗?

$user = $this -> 用户 -> get_by_facebook( $fb_user['id'] );

这就是我在我的网站上所做的一切,它工作得很好。这还有一个好处是,如果 Facebook 确实更改了任何内容,您只需要下载新的 SDK,并且您的代码应该保持不变。

于 2012-11-09T23:58:45.750 回答