-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfb-callback.php
More file actions
73 lines (57 loc) · 2.06 KB
/
fb-callback.php
File metadata and controls
73 lines (57 loc) · 2.06 KB
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
<?php
require_once 'include/user.php';
require_once 'include/facebook.php';
$fbHelper = $fb->getRedirectLoginHelper();
try {
$accessToken = $fbHelper->getAccessToken();
} catch (Exception $e) {
echo 'Přihlášení pomocí Facebooku selhalo. Chyba: ' . $e->getMessage();
die();
}
if (!$accessToken) {
die('Přihlášení pomocí Facebooku se nezdařilo. Zkuste to znovu.');
}
$oAuth2Client = $fb->getOAuth2Client();
$accessTokenMetadata = $oAuth2Client->debugToken($accessToken);
$fbUserId = $accessTokenMetadata->getUserId();
$response = $fb->get('/me?fields=name,email', $accessToken);
$graphUser = $response->getGraphUser();
$fbUserEmail = $graphUser->getEmail();
$fbUserName = $graphUser->getName();
$query = $db->prepare('SELECT * FROM library_users WHERE facebook_id=:facebookId LIMIT 1;');
$query->execute([
':facebookId' => $fbUserId
]);
if ($query->rowCount() > 0) {
$user = $query->fetch(PDO::FETCH_ASSOC);
}else{
$query = $db->prepare('SELECT * FROM library_users WHERE email=:email LIMIT 1;');
$query->execute([
':email' => $fbUserEmail
]);
if ($query->rowCount() > 0) {
$user = $query->fetch(PDO::FETCH_ASSOC);
$updateQuery = $db->prepare('UPDATE library_users SET facebook_id=:facebookId WHERE user_id=:id LIMIT 1;');
$updateQuery->execute([
':facebookId' => $fbUserId,
':id' => $user['user_id']
]);
} else {
$insertQuery = $db->prepare('INSERT INTO library_users (name, email, facebook_id) VALUES (:name, :email, :facebookId);');
$insertQuery->execute([
':name' => $fbUserName,
':email' => $fbUserEmail,
':facebookId' => $fbUserId
]);
$query = $db->prepare('SELECT * FROM library_users WHERE facebook_id=:facebookId LIMIT 1;');
$query->execute([
':facebookId' => $fbUserId
]);
$user = $query->fetch(PDO::FETCH_ASSOC);
}
}
if (!empty($user)) {
$_SESSION['user_id'] = $user['user_id'];
$_SESSION['user_name'] = $user['name'];
}
header('Location: index.php');