Facebook OAuth 2.0版

Facebook OAuth 2.0版,facebook,oauth,integration,Facebook,Oauth,Integration,我正在尝试将基于web的应用程序与facebook集成 首先,我创建了页面login/facebook,将用户重定向到URL:https://www.facebook.com/dialog/oauth?client_id=MY_ID&redirect_uri=https://www.domain.com/connect/facebook&scope=email,用户关于我,用户位置 到目前为止还不错。在这个阶段没有问题 如果用户授权我的应用程序,他将被重定向到www.domain.com/con

我正在尝试将基于web的应用程序与facebook集成

首先,我创建了页面
login/facebook
,将用户重定向到URL:
https://www.facebook.com/dialog/oauth?client_id=MY_ID&redirect_uri=https://www.domain.com/connect/facebook&scope=email,用户关于我,用户位置

到目前为止还不错。在这个阶段没有问题

如果用户授权我的应用程序,他将被重定向到www.domain.com/connect/facebook页面。在这个页面上,我使用FB返回的数据在数据库中创建用户,或者只是授权用户并创建会话。在这一步上,我遇到了一些问题。当我使用Facebook开发者帮助页面示例中的代码时,一切正常:

$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
    . $this->app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
    . $this->secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url = "https://graph.facebook.com/me?" . $access_token;
$user_object = json_decode(file_get_contents($graph_url));
当我使用下面的代码片段时,一切都很完美。然而,我更喜欢使用PHP-SDK,并且有问题。当我使用以下代码段时:

$session = $this->facebook->getSession();
var_dump($session);
            if( $session )
            {
                try
                {
                    $uid = $this->facebook->getUser();
                    $me = $this->facebook->api('/me');

                    var_dump('me');
                }
                catch (FacebookApiException $e)
                {
                    error_log($e);
                }
            }
会话为空。有人有什么建议吗


编辑
在玩了一些PHP-SDK之后,我注意到了一些有趣的东西: 当我使用SDK getLoginUrl()方法生成重定向URL时,它似乎部分工作正常

$login_url = $this->facebook->getLoginUrl(
        array(
            'api_key' => $this->api_key,
            'req_perms' => 'email,user_work_history,user_about_me,user_location',
            'next' => 'https://www.domain.com/connect/facebook'
        )
    );
现在,当用户授权我的应用程序时,他将被重定向到带有一些参数的正确页面,URL如下所示:
https://www.domain.com/connect/facebook?session={“会话密钥”%3A“11111111111-111111111”%2C“uid”%3A“11111111”%2C“过期”%3A“111111111”%2C“基本域”%3A“domain.com”%2C“访问令牌”%3A“1111111 | 22222-33333 | sdvssdv”%2C“sig”%3A“gsdbsdb”}

有人知道为什么它不是散列还是不应该

干杯, Marek

您可能需要添加:

'canvas' => 0,
'fbconnect' => 1
在getLoginUrl参数数组中