Php facebook sdk getuser()登录后是否始终返回0?

Php facebook sdk getuser()登录后是否始终返回0?,php,codeigniter,Php,Codeigniter,下面是我的控制器。我正在尝试使用facebook php sdk登录。在它的getuser()函数中,登录后总是返回0。有什么问题 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class User_Authentication extends CI_Controller { function __construct() { parent::__construct();

下面是我的控制器。我正在尝试使用facebook php sdk登录。在它的
getuser()
函数中,登录后总是返回0。有什么问题

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class User_Authentication extends CI_Controller
{
    function __construct() {
        parent::__construct();
        // Load user model
        $this->load->model('user');
    }

    public function index(){

       // Include the facebook api php libraries
        include_once APPPATH."libraries/facebook-api-php-codexworld/facebook.php";

        // Facebook API Configuration
        $appId = '1863771173889202';
        $appSecret = 'e86b25ccab12bc88c46aac322ebc40eb';
        $redirectUrl = base_url() . 'user_authentication/';
        $fbPermissions = 'email';

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

        ));
        $fbuser = $facebook->getUser();

        if ($fbuser) {
            $userProfile = $facebook->api('/me?fields=id,first_name,last_name,email,gender,locale,picture');
            // Preparing data for database insertion
            $userData['oauth_provider'] = 'facebook';
            $userData['oauth_uid'] = $userProfile['id'];
            $userData['first_name'] = $userProfile['first_name'];
            $userData['last_name'] = $userProfile['last_name'];
            $userData['email'] = $userProfile['email'];
            $userData['gender'] = $userProfile['gender'];
            $userData['locale'] = $userProfile['locale'];
            $userData['profile_url'] = 'https://www.facebook.com/'.$userProfile['id'];
            $userData['picture_url'] = $userProfile['picture']['data']['url'];
            // Insert or update user data
            $userID = $this->user->checkUser($userData);
            if(!empty($userID)){
                $data['userData'] = $userData;
                $this->session->set_userdata('userData',$userData);
            } else {
               $data['userData'] = array();
            }
        } else {
            $fbuser = '';
            $data['authUrl'] = $facebook->getLoginUrl(array('redirect_uri'=>$redirectUrl,'scope'=>$fbPermissions));
        }
        $this->load->view('user_authentication/index',$data);
    }

    public function logout() {
        $this->session->unset_userdata('userData');
        $this->session->sess_destroy();
        redirect('/user_authentication');
    }
}

我认为您需要检查重定向uri,并将正确的URL放入其中。
以下是我认为对您有帮助的一行代码:

$loginUrl = $facebook->getLoginUrl(array ( 
'display' => 'popup',
'redirect_uri' => 'http://localhost/demo/index.php'
));

在window.fbAsyninit中,我已经将cookie和oauth设置为true,这很有效

cookie:正确,
真的

确保在php中也有

cookie'=>正确

这将使php代码能够与JS集成

您需要确保用户已使用以下工具登录:

$loginUrl=$facebook->getLoginUrl(数组('scope'=>'read_stream,etc..)

范围由此处所述的权限定义

在此之后,您应该能够:

$user=$facebook->api(“/me”)

这将获得一个与用户关联的数组,$user['id']可能是您要存储的数组,以及任何其他信息,如电子邮件地址,请确保在范围内请求电子邮件


希望能解决问题

函数抛出的错误是什么?原因可能是任何内容、权限、不正确的访问令牌等。更新标题、语法和文本以确保可读性在登录后不会出现任何错误。它会将我重新定向到登录页面,但现在我已使用不同的方式完成。这不是hepling。。getuser()在登录后返回0。我设置了重定向uri。请检查此设置并转到base_facebook.php文件,找到makeRequest()方法并检查以下行$opts=self::$CURL\u opts;如果您得到该行,请添加该行,$opts[CURLOPT_SSL_VERIFYPEER]=false;我不明白它在php.ini文件中的意思。您应该转到php.ini文件,将cookie更新为true,并遵循上述代码。将起作用:)我必须取消注释哪一行在php.ini文件中有许多cookie写入的地方转到Application->config->config.php文件。并进行以下更改:$config['cookie\u secure']=TRUE$config['cookie_httponly']=TRUE;我想原因可能是我使用的是PHPSDK3,而不是最新版本