首先,我下载了 Facebook PHP SDK 并在这里应用了第一个答案: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0
在我的控制器中:
我尝试获取用户: $this->facebook->getUser(); .. 如果是 0,我调用另一个函数 $this->facebook_login(); - 否则我会在数据库中保存一些数据,例如名称。
在 facebook_login() 中,会生成一个 Login Url:$this->facebook->getLoginUrl() - 并传递给视图,该视图显示它。
到目前为止,我单击登录 url 并重定向到 Facebook,请求批准和身份验证等 - 然后将我重定向回“1”中的页面。
问题是,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。
谢谢