【问题标题】:PHP SDK + Code IgniterPHP SDK + 代码点火器
【发布时间】:2012-04-18 12:59:20
【问题描述】:

首先,我下载了 Facebook PHP SDK 并在此处应用了第一个答案: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0

在我的控制器中:

  1. 我尝试获取用户:$this->facebook->getUser(); .. 如果是 0,我调用另一个函数 $this->facebook_login(); - 否则我会在数据库中保存一些数据,例如名称。

  2. 在 facebook_login() 中,会生成一个登录 Url:$this->facebook->getLoginUrl() - 并将其传递给显示它的视图。

  3. 到目前为止,我单击登录 url 并重定向到 Facebook,请求批准和身份验证等 - 然后将我重定向回“1”中的页面。

  4. 问题是,getUser 返回零。我打印了 $SESSION 变量,发现只有 fb{appId}_state 正在设置。

我尝试使用以下代码创建另一个不在 CI 文件夹中的 php 文件(login.php):

<?php

define('BASEPATH', '');
require_once('application/libraries/facebook.php');

$fb = new Facebook(array('appId'=>'...', 'secret'=>'...'));

$user = $fb->getUser();

if($user == 0){
    $login = $fb->getLoginUrl();
    echo '<a href="'.$login.'">Login</a>';
} else {
    print_r($fb->api('/me'));
}

?>

如果我访问 login.php 然后访问上面“1”中的页面 - getUser 返回用户 ID 并且 $_SESSION 包含用户详细信息。因此,我猜问题出在 CodeIgniter 但我不知道如何解决它.

我搜索并尝试了几种解决方案,但这是我能做的最好的。如果可能,我不想使用 JS SDK。

谢谢

【问题讨论】:

  • 在问题开头的链接中找到的构造函数中,在加载 facebook 库之前添加: parse_str( $_SERVER['QUERY_STRING'], $_REQUEST );
  • cookie_domain 变量是否在 application/config/config.php 中正确设置为您的域?
  • 是的。我想出了解决方案并将其作为评论发布。谢谢你:)

标签: php facebook codeigniter


【解决方案1】:

我找到了解决方案并写了一篇关于它的博客文章here

【讨论】:

  • 请随意将此标记为“已接受的答案”。 More info here 如果需要。
  • @GalalAly 请不要链接到外部站点,因为无法保证该站点将来会存在。相反,请在此处发布您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2011-06-04
  • 2016-01-28
相关资源
最近更新 更多