Created
November 26, 2017 07:14
-
-
Save mnpappo/9558852d2d29ef38eaf6b6da341d3f1c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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>"; | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Change these: