Php 如何使用CodeIgniter将facebook登录集成到本地主机上的网站?

Php 如何使用CodeIgniter将facebook登录集成到本地主机上的网站?,php,facebook,codeigniter,Php,Facebook,Codeigniter,我正在尝试使用CodeIgniter将facebook登录集成到本地主机上的我的网站上。我在controlleruser.php中创建了一个fb\u login函数,其中还定义了不同的函数。问题是,当我从login\u view.php调用fb\u login函数时,它就不工作了,而当fb\u login在一个单独的控制器中定义并调用时,它的函数就工作了 代码如下: user.php(控制器) 但是这可以工作fblogin.php(controller) 在中,将“站点URL”设置为您的本地地址

我正在尝试使用CodeIgniter将facebook登录集成到本地主机上的我的网站上。我在controller
user.php
中创建了一个
fb\u login
函数,其中还定义了不同的函数。问题是,当我从
login\u view.php
调用
fb\u login
函数时,它就不工作了,而当
fb\u login
在一个单独的控制器中定义并调用时,它的函数就工作了

代码如下:

user.php(控制器)

但是这可以工作fblogin.php(controller)

在中,将“站点URL”设置为您的本地地址“”

Facebook不会重定向回您的服务器。fbjavascript插件确实如此,它在浏览器的上下文中运行,浏览器知道“localhost”指向哪里

完成后不要忘记将其更改回您的域。

在中,将“站点URL”设置为您的本地地址“”

Facebook不会重定向回您的服务器。fbjavascript插件确实如此,它在浏览器的上下文中运行,浏览器知道“localhost”指向哪里



完成后,不要忘记将其更改回您的域。

我想这与您使用的URL/路由有关,因为它是从一个控制器而不是从另一个控制器工作的。请确保您正在调用正确的url
/controller/method
,而不是像调用
/method
那样调用它,因为这样会找到合适的控制器方法。

我想这与您使用的url/路由有关,因为它是从一个控制器而不是从另一个控制器工作的。确保您正在调用正确的url
/controller/method
,而不是像调用
/method
那样调用它,认为它会命中相应的controller方法。

我重新检查它的正确性。。但是,如果使用fblogin控制器登录,然后使用用户控制器登录,则会出现另一个问题。否则,很难帮助您解决此问题,因为您会说“当从另一个控制器调用它时,它会工作…”,但您在两个控制器中定义的功能是不同的。例如,url
'/me?locale=en_US&fields=name,email'
vs干脆
me
。。。您是否收到特定的PHP错误?您是否检查了错误日志?url“/me?locale=en_US&fields=name,email”和我不是问题所在。。。。没有收到php错误…对…我不是在暗示这是…只是两者之间还有其他差异…因此尽可能仔细地比较两者可能会有所帮助,并发布您的视图代码。这些函数是如何调用的?你是通过JS给他们打电话吗?不,我不是通过JS给他们打电话。。。称之为“我重新检查了它的正确性”。。但是,如果使用fblogin控制器登录,然后使用用户控制器登录,则会出现另一个问题。否则,很难帮助您解决此问题,因为您会说“当从另一个控制器调用它时,它会工作…”,但您在两个控制器中定义的功能是不同的。例如,url
'/me?locale=en_US&fields=name,email'
vs干脆
me
。。。您是否收到特定的PHP错误?您是否检查了错误日志?url“/me?locale=en_US&fields=name,email”和我不是问题所在。。。。没有收到php错误…对…我不是在暗示这是…只是两者之间还有其他差异…因此尽可能仔细地比较两者可能会有所帮助,并发布您的视图代码。这些函数是如何调用的?你是通过JS给他们打电话吗?不,我不是通过JS给他们打电话。。。把它叫做“那么它就不起作用了”——你能定义一下这意味着什么吗?它会给出一个错误吗?您被发送到的url是什么?你会得到什么样的回应,你知道它不起作用,而当它起作用时你会得到什么样的回应?另外,你能发布你的
用户
控制器的剩余部分吗?如果它在
fblogin
controller中工作,那么它只表示它在另一个控制器中工作相同,除非在初始化时,两个控制器之间有很大的不同,或者如果您有一个路由正在处理问题。它不会给出任何错误。。。。在我的“login\u view.php”视图中,我将此url
用于使用facebook登录。。但它只在我使用
fblogin
controller登录时起作用,当我使用它登录时,然后单击
这个然后它就可以登录..对,我明白了,但我想说的是…你怎么知道它不起作用?你得到了什么反馈?是404页吗?当你点击
index.php/user/fb_login
时,一定会收到某种响应——那是什么响应?您在dev tools的网络面板中看到了什么?作为响应,它会重新加载
login\u视图
view.“然后它就不工作了”——您能定义一下这意味着什么吗?它会给出一个错误吗?您被发送到的url是什么?你会得到什么样的回应,你知道它不起作用,而当它起作用时你会得到什么样的回应?另外,你能发布你的
用户
控制器的剩余部分吗?如果它在
fblogin
controller中工作,那么它只表示它在另一个控制器中工作相同,除非在初始化时,两个控制器之间有很大的不同,或者如果您有一个路由正在处理问题。它不会给出任何错误。。。。在我的“login\u view.php”视图中,我将此url
用于使用facebook登录。。但它只在我使用
fblogin
controller登录时起作用,当我使用它登录时,然后单击
这个然后它就可以登录..对,我明白了,但我想说的是…你怎么知道它不起作用?你得到了什么反馈?是404页吗?当你点击
index.php/user/fb_login
时,一定会收到某种响应——那是什么响应?你从中看到了什么
public function fb_login(){

        $this->load->library('facebook');                
        $user = $this->facebook->getUser();
        echo $user;
        if ($user) {
            try{
            $user_profile = $this->facebook->api('/me?locale=en_US&fields=name,email');
            }
            catch (FacebookApiException $e){
                $user = null;
            }
        }
        else{
            $this->facebook->destroySession();
        }

        if ($user) {
            $logout_url = site_url('user/logout');
            $user_data =array(
                'user_id' => $user_profile['id'],
                'username' => $user_profile['name'],
                'logged_in' => true
            );

            $this->session->set_userdata($user_data);
            $this->load->view('profile_view');//,$logout_url,$user_profile);
        }
        else{
            $login_url = $this->facebook->getLoginUrl(array(
                'redirect_uri' => site_url('user/login_page'),
                'scope' => 'email'
                ));

            $this->load->view('login_view',$login_url);    
        }

}
class Fblogin extends CI_Controller { 

    public function Login(){


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

        $user = $this->facebook->getUser();
        echo $user;
        if ($user) {
            try{
            $data['user_profile'] = $this->facebook->api('/me?locale=en_US&fields=name,email');
            }
            catch (FacebookApiException $e){
                $user = null;
            }
        }
        else{
            $this->facebook->destroySession();
        }

        if ($user) {
            $data['logout_url'] = site_url('fblogin/logout');     
        }
        else{
            $data['login_url'] = $this->facebook->getLoginUrl(array(
                'redirect_uri' => site_url('fblogin/login'),
                'scope' => 'email'
                ));

        }
        $this->load->view('login',$data);
    }

    public function logout() {
        $this->load->library('facebook');
        $this->facebook->destroySession();
        redirect('fblogin/login');
    }

}