Php 我能';无法获取用户facebook的会话,getUser返回0-codeigniter

Php 我能';无法获取用户facebook的会话,getUser返回0-codeigniter,php,facebook,codeigniter,Php,Facebook,Codeigniter,问候, 我对Facebook SDK-PHP和Codeigniter有问题 当我试图捕获并获取该用户的基本数据时,我无法获取该用户的会话 我得到的错误是:“必须使用活动访问令牌来查询有关当前用户的信息。” 当我应用“getUser()”时,我得到了“0” 注意:我下载了php sdk,并将文件base_facebook.php和facebook.php放在我的目录库中 在我的application/config/config.php中,我放置了我的facebook应用程序的密钥和app_秘密 C

问候,

我对Facebook SDK-PHP和Codeigniter有问题

当我试图捕获并获取该用户的基本数据时,我无法获取该用户的会话

我得到的错误是:“必须使用活动访问令牌来查询有关当前用户的信息。”

当我应用“getUser()”时,我得到了“0”

注意:我下载了php sdk,并将文件base_facebook.php和facebook.php放在我的目录库中

在我的application/config/config.php中,我放置了我的facebook应用程序的密钥和app_秘密

Config.php:

$config['base_url'] = 'http://localhost/myapp_local';
$config['app_id'] = 'xxxxxxxxxxxxxx';
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_name'] = 'http://apps.facebook.com/myapp_local/';
在我的Controller Main.php中,我有以下代码:

class Main extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $fb_config = array(
            'appId' => $this->config->item('app_id'),
            'secret' => $this->config->item('secret')
        );
        $this->load->library('facebook', $fb_config);

    private function _getInfoUserFB() {
        try {
            $fb_id = $this->facebook->getUser();
            if ($fb_id) {
                $fb_data = $this->facebook->api('/me');
                return $fb_data;
            }
        } catch (Exception $exc) {
            echo $exc;
        }
    }
       [....]
}
现在,在我的变量$fb_id中,获取bool值的地方,总是有“0”。 因此,当我试图获取当前用户facebook的数据时,我总是有一个例外消息:“必须使用活动访问令牌来查询当前用户的信息。”

我做错了什么?我错过了什么步骤或设置

注2:我在Facebook上没有按钮登录,我的应用程序通过在Facebook上配置我的应用程序直接连接到Facebook。(画布URL、安全画布URL、画布页面、站点URL)

注意3:我的应用程序有一些需要的权限,因此我将必要的权限放在“设置权限”上,但不显示“验证引用”选项以显示对话框确认权限


我使用CodeIgniter 2.1.3版和PHP-SDK 3.2.0版,Facebook在
localhost
方面做得非常糟糕。我也经历过好几次。我找到的解决方案是编辑我的主机文件(
C:\Windows\system32\drivers\etc\hosts
/etc/hosts
),并在其中添加类似以下行的内容:

127.0.0.1    myfbapp.local
如果您将浏览器指向
http://myfbapp.local/
,它实际上将转到127.0.0.1,这意味着
localhost
。当然,您还必须更新CI配置,并将基本URL更改为
http://myfbapp.local


据我所知,如果域名中没有点(
),Facebook PHP SDK在设置cookie时会遇到问题,所以这正是我的解决方案所做的。

你必须进入Facebook开发者网站->应用->权限。并设置应用程序的基本信息权限

然后在函数
getLoginUrl(数组(“范围”=>“用户关于我”)
中,必须给出参数

最后,您必须保存访问令牌
$this->facebook->getAccessToken();


如果您有问题,可以问我。我已经在几乎所有的社交媒体平台上安装了Codeigniter:)

好的!我解决了它。修复的问题是与新版本的交互必须使用此表单:

然后,当你的应用程序首次加载时,你必须调用第一次获取当前用户信息的函数。换句话说,你在网站的主索引视图中调用该函数


如果您在其他时间调用,您的函数将无法获取当前用户的访问令牌。

我在自己的服务器上测试时也遇到了同样的问题(我将我的应用上载到服务器上,并创建其他应用facebook)。我的应用程序总是给我这个例外。好的,我在我的facebook应用程序设置上设置了权限。但是,当我像“普通用户”一样进入我的应用程序时“授权对话框没有显示授予权限的信息。可能发生这种情况是因为“已验证的引用”复选框在我的权限设置中没有显示我扫描您发布的整个函数:private function\u getInfoUserFB()这是完整的函数。只有我使用此函数才能获取包含当前用户facebook信息的数组。仅此而已。不推荐使用经过身份验证的推荐。。这就是我无法在“设置”权限中查看此选项的原因。
$fb_data['id'] = NULL
$fb_data['first_name'] = NULL
$fb_data['last_name'] = NULL