-
Notifications
You must be signed in to change notification settings - Fork 2
/
boilerplate_AddedTab.php
138 lines (102 loc) · 4.9 KB
/
boilerplate_AddedTab.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
session_start();
// Start the SESSION
require_once __DIR__ . '/src/Facebook/autoload.php';
// Import FB PHP SDK
$mysqli = new mysqli("host", "username", "password", "database_name");
// Connect to database
$fb = new Facebook\Facebook([
'app_id' => '{Your App ID}',
'app_secret' => '{Your App Secret}',
'default_graph_version' => '{Your Graph Version}',
]);
// Create a facebook object
// It is used to connect with your app each time a request is made
$helper = $fb->getPageTabHelper();
// Create a getPageTabHelper
// This helper is used to get access_token from facebook tab
try {
$accessToken = $helper->getAccessToken();
// Use helper to get accessToken
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
// When Graph returns an error
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
// When validation fails or other local issues
}
if (isset($accessToken)) {
// If $accessToken is set
if (isset($_SESSION['facebook_access_token'])) {
// If facebook_access_token is set
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
// Set setDefaultAccessToken equal to facebook_access_token
// Now you don't need to provide $accessToken whenever you make any request
} else {
// If facebook_access_token is not set
$_SESSION['facebook_access_token'] = (string) $accessToken;
// getting short-lived access token
$oAuth2Client = $fb->getOAuth2Client();
// OAuth 2.0 client handler
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
// Exchanges a short-lived access token for a long-lived one
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// Set the short-lived access token in session equal to long-lived access token
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
// setting default access token to be used in script
}
if (isset($_GET['code'])) {
header('Location: ./');
// redirect the user back to the same page if it has "code" GET variable
}
try {
$profile_request = $fb->get('/me?fields=name,first_name,last_name,email');
// Create a GET request to get basic info about user
$profile = $profile_request->getGraphNode()->asArray();
// Convert the data from the GET request into Array
$helper = $fb->getPageTabHelper();
// Create a new getPageTabHelper
$signedRequest = $helper->getSignedRequest();
// Get Signed Request using the helper
$signedRequest=$signedRequest->getPayload();
// Exteract Payload from the Signed Request
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// When Graph returns an error
header("Location: ./");
exit;
// redirecting user back to app login page
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
// When validation fails or other local issues
}
if (!empty($signedRequest)){
// If $signedRequest object is not empty
$pageid = $signedRequest[page][id];
// Set $pageid equal to page-id obtained using signedRequest
$pages = $mysqli->query("SELECT * FROM page_tab WHERE page_id='$pageid' ORDER BY id DESC LIMIT 1");
// Make a query to obtain user corresponding to the page_id
foreach ($pages as $page) {
if (!empty($page['doc_id'])){
$_GET['id']=$page['doc_id'];
$showtab = 1;
} else if (!empty($page['client_id'])){
$_GET['cid']=$page['client_id'];
$showtab = 1;
}
// My Custom properties which I used to create dynamic page
// You can insert your properties here
}
if (isset($showtab) && $showtab == 1){
include("tab.php");
// Now import the page. My page is made such that it reacts to the GET Requests
}
} else {
echo "Token Obtained but Sign Request Failed /n";
}
} else {
echo "Failed to obtain token";
}
?>