Facebook API SDK(PHP)清除网站会话

6 php session cakephp session-cookies facebook-php-sdk

我成功使用Facebook SDK(PHP)将用户连接到我的网站,但我们在验证他们的帐户时遇到问题.他们的帐户已成功通过身份验证,但出于某种原因,我的网站会话已被清除.

流:

  • 用户登录我的站点(本地用户名和密码)
  • 用户通过弹出窗口连接到Facebook
  • Facebook验证用户并返回我的网站
  • 我的网站会话现在无效(在弹出窗口和主窗口中)导致用户注销

我正在使用Facebook SDK(PHP),我的网站使用CakePHP框架

任何帮助将不胜感激.

小智 1

我无法找出会话被重置的原因,因此决定不使用 SDK 进行身份验证。这是我用的。

$code = (isset ($_REQUEST['code']) ? $_REQUEST['code'] : null);

if (empty ($code)) {
    $dialogUrl = 'http://www.facebook.com/dialog/oauth?client_id=' . $this->appId . '&redirect_uri=' . urlencode($this->url) . '&scope=' . implode(',', $this->scope);
    header('Location: ' . $dialogUrl);
    die;
}
else {
    $tokenUrl = 'https://graph.facebook.com/oauth/access_token?client_id=' . $this->appId . '&redirect_uri=' . urlencode($this->url) . '&client_secret=' . $this->secret . '&code=' . $code;
    $accessToken = file_get_contents($tokenUrl);

    $this->Session->write('facebookAccessToken', $accessToken);

    $graphUrl = 'https://graph.facebook.com/me?' . $accessToken;
    $fbUser = json_decode(file_get_contents($graphUrl));

    if ($fbUser) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)