0

问候,

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

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

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

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

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

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

配置文件:

$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 中,获得布尔值,我总是有“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”选项来显示对话框确认权限。

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

4

3 回答 3

1

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

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

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

有问题可以问我。我已经用几乎所有社交媒体平台设置了我的 Codeigniter :)

于 2012-10-20T07:37:06.100 回答
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 会遇到问题,所以这正是我的解决方案所做的。

于 2012-10-20T04:29:23.260 回答
0

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

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

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

于 2012-10-20T18:07:19.573 回答