FacebookPHPSDKを使用して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;
}
}
編集:
Facebook OAuth 2.0を使用してこの質問へのリンクを見つけました -アクセストークンを取得するにはどうすればよいですか?
しかし、それが機能するかどうかはわかりません。CODE(THE_CODE_YOU_GOT_FROM_THE_SERVER)を取得してURLに渡す方法がわからないためです。それが機能する場合、どうすればこのコードを取得できますか?
更新18/04/12
現在動作しています。スコープ内では、ユーザーから「user_likes」の許可を得ていませんでした。