#Facebook Access Token
Aquí en este ejemplo veremos como obtener la información del usuario del lado backend enviando el accesstoken desde el cliente mediante javascript.
fbAsyncInit.js
window.fbAsyncInit = function() {
FB.init({
appId : '{{APPID}}',
xfbml : true,
version : 'v2.6'
});
FB.getLoginStatus(function(response) {
switch(response.status){
case 'connected':
$.post('/user/connect', response, function(res){
if(res.error)
console.log('error: ',res.message);
else
console.log('welcome user ', res.data.userName);
},'json');
break;
default:
console.log('not user logged');
break;
}
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
UserConnect.php
$post = $request->getParsedBody();
// instance fb
$fb = new \Facebook\Facebook([
'app_id' => '{{APPID}}',
'app_secret' => '{{APPSECRET}}',
'default_graph_version' => 'v2.5',
]);
// establecer accesstoken para todas las peticiones
$fb->setDefaultAccessToken($post['authResponse']['accessToken']);
try {
$response = $fb->get('/me');
$userNode = $response->getGraphUser();
echo json_encode(['error'=>false, 'data'=> ['userName'=> $userNode->getName()]]);
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo json_encode(['error'=>true,'message'=>'Graph returned an error: ' . $e->getMessage()]);
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo json_encode(['error'=>true,'message'=>'Facebook SDK returned an error: ' . $e->getMessage()]);
}