Запросить данные пользователя после входа на Facebook

Слушайте мой php-код, который пытается войти через Facebook

public function fb_login(){

$fb = new Facebook\Facebook([
'app_id' => '<app id>',
'app_secret' => '<app secret>',
'default_graph_version' => 'v2.5',
]);

$helper = $fb->getRedirectLoginHelper();
$permissions = ['public_profile', 'user_friends', 'publish_actions', 'email', 'user_about_me', 'user_birthday']; // optional
$data['login_url'] = $helper->getLoginUrl('http://localhost/trada-backend/index.php/facebook_login/fb_callback', $permissions);
// $data = json_encode($data['login_url']);
/*$this->load->view('home',$data);*/
echo json_encode($data);
// echo $data;
}public function fb_callback(){
$fb = new Facebook\Facebook([
'app_id' => '<app id>',
'app_secret' => '<app secret>',
'default_graph_version' => 'v2.5',
]);

$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}

if (isset($accessToken)) {
// Logged in!
$_SESSION['facebook_access_token'] = (string) $accessToken;
$session = $_SESSION['facebook_access_token'];

$fbApp = new Facebook\FacebookApp('<app id>', '<app secret>');
$request = new Facebook\FacebookRequest($fbApp, $accessToken, 'GET', '/me',
array('fields' => 'picture{url},id,name,birthday,email,link'));try {
$response = $fb->getClient()->sendRequest($request);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}

$graphNode = $response->getGraphNode();
/* handle the result */
//      $message = 'User name: ' . $graphNode['name'];
$data = array (
'id' => $graphNode['id'],
'birthday' => $graphNode['birthday'],
'email' => $graphNode['email'],
'link' => $graphNode['link'],
'user_name' => $graphNode['name'],
'is_logged_in' => 1,
'profile_pic_link' => json_decode($graphNode['picture'])->url
);

$this->session->set_userdata($data);
/*redirect(base_url().'user/index');*/
echo json_encode($data);
// Now you can redirect to another page and use the
// access token from $_SESSION['facebook_access_token']
}
}

Вот мой Аякс

$.ajax({
type: "POST",
url: "http://localhost/trada-backend/index.php/Facebook_login/fb_login",
success : function(url_response){
var url = JSON.parse(url_response);
/*alert(url.login_url);*/
$('a.btn-facebook').attr('href', url.login_url);
}
});

В моем Ajax я пытаюсь получить URL-адрес от fb_login () в php, чтобы получить разрешение от пользователя, но после этого я хочу запросить это внутри fb_callback ()

$data = array (
'id' => $graphNode['id'],
'birthday' => $graphNode['birthday'],
'email' => $graphNode['email'],
'link' => $graphNode['link'],
'user_name' => $graphNode['name'],
'is_logged_in' => 1,
'profile_pic_link' => json_decode($graphNode['picture'])->url
);

Тем не менее, fb_callback () вызывается внутри моего fb_login ()

$data['login_url'] = $helper->getLoginUrl('http://localhost/trada-backend/index.php/facebook_login/fb_callback', $permissions);

Итак, как я могу получить нужные данные? заранее спасибо

РЕШИТЬ

Итак, я нашел 1 способ справиться с этим.
Сначала я помещаю нужные мне данные в fb_callback () в файл cookie, а затем отправляю этот файл cookie на мою страницу веб-интерфейса.

$data = json_encode($data_session);
setcookie('facebook', $data, time()+1, "/");
include('http://localhost/trada-frontend/index.html');
redirect('http://localhost/trada-frontend/index.html');

В моем js-файле я получаю данные из cookie-файла, отделяя имя cookie-файла и его данные, и декодирую их

var fb_data= document.cookie;
if(fb_data != null){
var cookieParts = fb_data.match(/^([^=]+)=(.*)$/);
var cookie_name = cookieParts[1];
var decode = decodeURIComponent(cookieParts[2]);
var fb = JSON.parse(decode);

}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector