我正在尝试使用 facebook PHP SDK 从 facebook 获取用户数据。(我正在使用 codeigniter 开发网站)。我能够获取所有基本数据。但我无法获取那些需要访问令牌的数据。我通过解析 url 从注销 url 中获取访问令牌参数。但是那个令牌不起作用。它与主要访问令牌不同吗?
这是我的控制器文件
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class UserRegistration2 extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('test/Facebook_model');
}
function index() {
$fb_data = $this->Facebook_model->get_data();
if((!$fb_data['uid']) or (!$fb_data['me'])) {
echo "<a href='" .$fb_data['loginUrl']. "'>Login</a>";
}
else {
$params = null;
parse_str($fb_data['logoutUrl'], $params);
$graph_url = "https://graph.facebook.com/me/music?access_token=" . $params['access_token'];
//$user = json_decode(file_get_contents($graph_url));
echo "<pre>";
print_r($fb_data);
//print_r($user);
//print_r($params);
echo "</pre>";
echo "<a href='" .$graph_url. "'>Get Music</a>";
echo "<a href='" .$fb_data['logoutUrl']. "'>Logout</a>";
}
}
}
这是我的模型文件
public function __construct() {
parent::__construct();
$config = array(
'appId' => '130090207121542',
'secret' => 'xxxxxxxxxxxxxxxxxxxxx',
'fileUpload' => true
);
$this->load->library('facebook/Facebook', $config);
}
function get_data() {
$user = $this->facebook->getUser();
$profile = null;
if($user)
{
try {
$profile = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
$fb_data = array(
'me' => $profile,
'uid' => $user,
'loginUrl' => $this->facebook->getLoginUrl(
array(
'scope' => 'email,user_interests,user_birthday,publish_stream',
'redirect_uri' => 'http://herle.in/flutter/index.php/test/userRegistration2.html'
)
),
'logoutUrl' => $this->facebook->getLogoutUrl(),
);
return $fb_data;
}
}
编辑:
找到此问题的链接 Using Facebook OAuth 2.0 - How do I fetch the access token?
但不知道它是否会起作用。因为我不知道让 CODE (THE_CODE_YOU_GOT_FROM_THE_SERVER) 将其传递到 url。如果它可以工作,那么我怎样才能得到这个代码?
2012 年 4 月 18 日更新
它现在正在工作。在范围内,我没有从用户那里获得“user_likes”的许可。