Github Home:
https://github.com/facebookarchive/php-graph-sdk/tree/master/docs
Install
1 |
composer require facebook/graph-sdk |
Sample code to get login URL:
1 2 3 4 5 6 7 8 9 10 11 12 |
$fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); $permissions = ['email']; // Optional permissions $loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php', $permissions); echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'; |
Sample code to get access token
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 |
$fb = new Facebook\Facebook([ 'app_id' => '{app-id}', 'app_secret' => '{app-secret}', 'default_graph_version' => 'v2.10', ]); $helper = $fb->getRedirectLoginHelper(); try { $accessToken = $helper->getAccessToken(); } catch(Facebook\Exception\ResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exception\SDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } if (! isset($accessToken)) { if ($helper->getError()) { header('HTTP/1.0 401 Unauthorized'); echo "Error: " . $helper->getError() . "\n"; echo "Error Code: " . $helper->getErrorCode() . "\n"; echo "Error Reason: " . $helper->getErrorReason() . "\n"; echo "Error Description: " . $helper->getErrorDescription() . "\n"; } else { header('HTTP/1.0 400 Bad Request'); echo 'Bad request'; } exit; } |
Sample code to get long live token
1 2 3 4 5 6 7 8 9 10 11 12 |
if (! $accessToken->isLongLived()) { // Exchanges a short-lived access token for a long-lived one try { $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); } catch (Facebook\Exception\SDKException $e) { echo "<p>Error getting long-lived access token: " . $e->getMessage() . "</p>\n\n"; exit; } echo '<h3>Long-lived</h3>'; var_dump($accessToken->getValue()); } |
Get login user data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
try { // Get the \Facebook\GraphNodes\GraphUser object for the current user. // If you provided a 'default_access_token', the '{access-token}' is optional. $response = $fb->get('/me', '{access-token}'); } 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; } $me = $response->getGraphUser(); echo 'Logged in as ' . $me->getName(); |
Note:
Please be aware, that there are issues when using the Facebook SDK together with Guzzle 6.x. php-graph-sdk v5.x only works with Guzzle 5.x out of the box. However, there is a workaround to make it work with Guzzle 6.x.
Brand Rules
https://developers.facebook.com/docs/facebook-login/userexperience/#buttondesign
User click cancel and redirect back with some params
1 |
https://xxxx.com/member/fb/listener?error=access_denied&error_code=200&error_description=Permissions+error&error_reason=user_denied&state=1bc5dafaf19a7bf66a0167a0b251c214#_=_ |
Reference:
- Facebook SDK for PHP
https://github.com/facebookarchive/php-graph-sdk/tree/master/docs - Login button:
https://developers.facebook.com/docs/facebook-login/web/login-button/#——– - Permissions
https://developers.facebook.com/docs/permissions/reference#user-data - Possible problem
https://stackoverflow.com/questions/31520593/facebook-php-sdk-5-api-2-4-cross-site-request-forgery-validation-failed-r/36684861#36684861