annotate default/assets/vendors/theme-widgets/vendor/mute/facebook/example/canvas-authentification.php @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 <?php
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 * Get the id for the connected user.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 * It does not use the cookie of Javascript SDK
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8 * @author Xavier Barbosa
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 * @since 13 February, 2013
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10 * @link https://developers.facebook.com/blog/post/616/
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 **/
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 use Mute\Facebook\App;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 use Mute\Facebook\Exception\GraphAPIException;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 * Default params
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 **/
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 $app_id = "YOUR_APP_ID";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 $app_secret = "YOUR_APP_SECRET";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 /**
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 * The process
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 **/
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 $app = new App($app_id, $app_secret);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 session_start();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 $user_id = $_SESSION['user_id'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 $access_token = $_SESSION['access_token'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 // ensure that we are still the current user
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35 $signed_request = isset($_REQUEST['signed_request'])
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 ? $app->parseSignedRequest($_REQUEST['signed_request'])
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 : null;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 if ($signed_request && $signed_request['user_id'] != $user_id) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 // oups, we are another user, clear the session
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 $user_id = null;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 if (!$user_id) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 // if a signed request is supplied, then it solely determines who the user is.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 if ($signed_request) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 if (array_key_exists('user_id', $signed_request)) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 $user_id = $signed_request['user_id'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 if ($user_id != $_SESSION['user_id']) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 session_destroy();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 session_start();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 $user_id = $_SESSION['user_id'] = $signed_request['user_id'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 $_SESSION['access_token'] = $signed_request['oauth_token'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 goto finishedAuthentification;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 session_destroy();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 session_start();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62 goto finishedAuthentification;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 // use access_token to fetch user id if we have a user access_token, or if
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 // the cached access token has changed.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 if ($code = $_REQUEST['code']) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 if ($_REQUEST['state'] == $_SESSION['state']) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70 unset($_SESSION['state']);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 $data = $app->getOAuth()->getAccessToken($code);
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 $access_token = $_SESSION['access_token'] = $data['access_token'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76 die('CSRF state token does not match one provided');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80 if ($access_token) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 try {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 $user_info = $app->get('/me', array(
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83 'access_token' => $access_token,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 ));
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 $user_id = $_SESSION['user_id'] = $user_info['user_id'];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86 } catch (GraphAPIException $e) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 session_destroy();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 session_start();
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 die('Cannot fetch user without access_token');
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 finishedAuthentification:
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 echo 'user_id is: ' $user_id;