Codeigniter getuser()在facebook对话框后返回0

时间:2014-06-19 19:02:30

标签: php facebook codeigniter nginx

你可以说这篇文章是公开的,但我正在寻找将近2天的时间,无法想通。

移动到新服务器并安装新的ssl后,我在两种不同的情况下登录Facebook时遇到了困难。

第一种情景:

用户尚未登录Facebook,Facebook登录重定向用户,登录facebook。用户登录后,facebook重定向到redirect_url,getuser返回0。

(如果返回我网站上的Facebook登录页面,用户可以登录,以便当用户登录到Facebook时,getuser可以正常工作。)

第二种情景:

用户注册,转到权限对话框,当用户授予权限时,再次getuser返回0,所以我想跳过第一个场景,但这个场景是病毒式的。

我尝试过这个解决方案:

我们现在正在使用nginx,在以前的服务器中我做了这个更新,今天我会告诉你我们已经添加了哪些内容。

需要为codeigniter和新的php版本更新1- Base_facebook.php代码。

Facebook PHP SDK: Fixing getUser() on PHP 5.4.x

2- Nginx cookie大小改变了,开始时甚至正常的facebook登录都不起作用。

3-我读了一些关于nginx自定义标题的内容,我们做了这些更新nginx-php-fpm-and-custom-header

Nginx underscore headers

4- CURLOPT_SSL_VERIFYPEER => false添加到base_facebook,再为其他用户提供另一种解决方案。

我认为在经过所有这些更新后我们错过了一些东西,但我真的看不出有什么问题?所以,如果你能与我分享你的经验,我会很高兴,我们可以找出问题所在。

5- parse_str($ _ SERVER ['QUERY_STRING'],$ _ REQUEST);在包含图书馆之前添加。

我的示例fb_login控制器。我是tank_auth_social with tank_auth

 function fblogin()
{

    parse_str($_SERVER['QUERY_STRING'],$_REQUEST);
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->load->library('security');
    $this->load->library('tank_auth');
    $this->load->library('tank_auth_social');
    $this->lang->load('tank_auth');
    $fb_id = $this->facebook->getUser();

    //inline_debug($fb_id);
    // To see if we have facebook id




    // User is found
    if( isset($fb_id) )
    {
        $user_profile = $this->facebook->api('/'.$fb_id);

    }

我的会议:

PHP Version 5.5.9-1ubuntu4 Nginx,FPM PHP 我的服务器在digitalocean上。

非常感谢。

0 个答案:

没有答案