Skip to content

Instantly share code, notes, and snippets.

@mnpappo
Created November 26, 2017 07:14
Show Gist options
  • Select an option

  • Save mnpappo/9558852d2d29ef38eaf6b6da341d3f1c to your computer and use it in GitHub Desktop.

Select an option

Save mnpappo/9558852d2d29ef38eaf6b6da341d3f1c to your computer and use it in GitHub Desktop.
# index.php
<?php
session_start();
require_once __DIR__ . '/vendor/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => '143450773085054',
'app_secret' => 'df5a3ec54d85f3ffe68c3709ceaccce9 ',
'default_graph_version' => 'v2.11',
// "persistent_data_handler"=>"session"
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['']; // optional
$loginUrl = $helper->getLoginUrl('http://localhost:8000/fb-callback.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
# fb-callback.php
<?php
session_start();
require_once __DIR__ . '/src/Facebook/autoload.php';
echo "<a href='http://localhost:8000/logout'>Logout</a>";
$fb = new Facebook\Facebook([
'app_id' => '143450773085054',
'app_secret' => 'df5a3ec54d85f3ffe68c3709ceaccce9',
'default_graph_version' => 'v2.11',
]);
$helper = $fb->getCanvasHelper();
$permissions = []; // optionnal
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$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)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// validating the access token
try {
$request = $fb->get('/me');
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
if ($e->getCode() == 190) {
unset($_SESSION['facebook_access_token']);
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl('https://apps.facebook.com/kakoli_notification/', $permissions);
echo "<script>window.top.location.href='".$loginUrl."'</script>";
exit;
}
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// getting basic info about user
try {
$profile_request = $fb->get('/me?fields=name,first_name,last_name,email');
$profile = $profile_request->getGraphNode()->asArray();
echo '<h1>User Info</h1>';
echo '<pre>';
var_dump($profile);
echo '<pre> <hr>';
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
unset($_SESSION['facebook_access_token']);
echo "<script>window.top.location.href='https://apps.facebook.com/kakoli_notification/'</script>";
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// sending notification to user
try {
$sendNotif = $fb->post('/' . $profile['id'] . '/notifications', array('href' => '?true=43', 'template' => 'click here for more information!'), '143450773085054|df5a3ec54d85f3ffe68c3709ceaccce9');
echo '<h1>Notification sent successfully!!!</h1>';
echo '<pre>';
var_dump($sendNotif);
echo '<pre>';
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
}
// Now you can redirect to another page and use the access token from $_SESSION['facebook_access_token']
} else {
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl('https://apps.facebook.com/kakoli_notification/', $permissions);
echo "<script>window.top.location.href='".$loginUrl."'</script>";
}
@mnpappo
Copy link
Author

mnpappo commented Nov 26, 2017

Change these:

  1. Facebook Web Games URL (https) - in app to your app's localhost's path
  2. Valid OAuth redirect URIs -in Client OAuth Settings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment