我无法获得用户facebook的会话,getUser返回0 - codeigniter

时间:2012-10-20 02:16:01

标签: php facebook codeigniter

此致

我对Facebook SDK-PHP和Codeigniter有疑问。

当我尝试捕获并获取该用户的基本数据时,我没有得到用户的会话。

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

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

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

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

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总是有一个例外消息:“必须使用活动访问令牌来查询有关当前用户的信息。”

$fb_data['id'] = NULL
$fb_data['first_name'] = NULL
$fb_data['last_name'] = NULL

我在这里做错了什么?我想念的任何步骤或设置?

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

注意3:我的应用程序有一些需要的权限,所以我在Settings-Permissions上设置了必要的权限但是没有向我显示“Auth Referrals”选项以显示Dialog确认权限。

我使用CodeIgniter版本2.1.3和PHP-SDK v 3.2.0

3 个答案:

答案 0 :(得分:1)

你必须去Facebook开发者网站 - >应用 - >允许。并为您的应用设置基本信息权限。

然后在你的函数getLoginUrl(array("scope" => "user_about_me)))中,你必须提供参数。

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

如果您遇到问题,可以问我。我已经为几乎所有的社交媒体平台设置了我的Codeigniter:)

答案 1 :(得分: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配置,并将基本网址更改为http://myfbapp.local

据我所知,如果域名中没有点(.),Facebook PHP SDK无法设置cookie,这正是我的解决方案所做的。

答案 2 :(得分:0)

好的!我解决了。固定的是与较新版本的交互必须具有以下形式: http://www.galalaly.me/index.php/2012/04/using-facebook-php-sdk-3-with-codeigniter-2-1/

然后,当您的应用首次加载时,您必须首次调用获取当前用户信息的函数。换句话说,您可以在网站的MAIN,INDEX视图中调用该函数。

如果您在其他时间打电话,您的功能无法获取当前用户的access_token。