你可以说这篇文章是公开的,但我正在寻找将近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
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上。
非常感谢。