此致
我对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
答案 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。