[Tutorial] Learn Facebook Apps development

0
24

Facebook is one of the social network in the world, so we should know how to programming with Facebook.

What need you do to become facebook developer!
1. Register one facebook account. Register here
2. Domain and Hosting
3. Register SSL Certificate (with https://) –  Example: Heroku, wordpress
4. Phone
5. IDE developer: Example: Notepad++, PHP Designer, Dream Weaver,…

Understand it will be help you in business so much in the future, …

This tutorial will demo to you how to create a facebook apps and using facebook api (PHP SDK)
We’re using Facebook API v2.6.

Step 1: Create your facebook account!

Step 2: Create your facebook apps, follow my instructions:

Login https://developers.facebook.com/

Create apps by “Add a new app”

Learn Facebook Apps development

Enter the name “Get Info Email List”
See below the options (this option maybe change up to Facebook development)

Learn Facebook Apps development

See the config apps:
Basic Settings:

Learn Facebook Apps development

Use Canvas Page name:
https://apps.facebook.com/email_list_app

Secure Canvas URL:
https://vilh.herokuapp.com/

Site URL:
https://vilh.herokuapp.com/

Learn Facebook Apps development

Learn Facebook Apps development

Valid OAuth redirect URLs:
https://vilh.herokuapp.com/callback.php

Advanced Settings:

Learn Facebook Apps development

Step 3: Build Source code

Download PHP SDK from the above link, after that use this link into your projects. Create two files with index.php and callback.php, set up your facebook SDK folder

Rename to facebook-sdk-v5

In source code remember   “always define the SDK source with /facebook-sdk-v5/”

Learn Facebook Apps development

Inside facebook-sdk-v5

Learn Facebook Apps development

Source code

index.php




<?php
   if(!session_id()) {
    session_start();
}
?>

<!DOCTYPE HTML>
<html>
<head>

    <title>Login with Facebook</title>
    <link href = "http://www.bootstrapcdn.com/twit
ter-bootstrap/2.2.2/css/bootstrap-combined.min.css"  rel = "stylesheet" />

    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="GallerySoft.info" />

    <title>Get list email address</title>
</head>

<body>

<?php

define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-sdk-v5/');
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

echo "<h1>Welcome to get list email address!</h1>";

$fb = new FacebookFacebook([
  'app_id'          => '144224829331429',
// Replace {app-id} with your app id
  'app_secret'      => 'ff0af80e8d80467adadbf8fa32e6c312',
  'default_graph_version' => 'v2.6',
    ]);
$helper = $fb->getRedirectLoginHelper();

// Optional permissions
$permissions = ['email', 'user_likes', 'manage_pages', 'publish_pages', 'read_stream'];

$loginUrl = $helper->getLoginUrl('https://vilh.herokuapp.com/callback.php', $permissions);


// add below foreach let's it don't got Cross-site request forgery validation failed.
// Required param “state” missing

foreach ($_SESSION as $k => $v)
{
    if (strpos($k, "FBRLH_") != FALSE){
        if (!setcookie($k, $v))
        {}
        else
            $_COOKIE[$k] = $v;
    }
}

echo '<pre>';
print_r ($_COOKIE);
echo '</pre>';


echo htmlspecialchars($loginUrl) . "<br> <br>";

echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook! ya</a>';

/*
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get('/me?fields=id,name', '{access-token}');
 
  echo '<pre>'; 
  echo $response; 
  echo '</pre>';
 
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
*/

?>
</body>
</html>

callback.php





<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="GallerySoft.info" />

    <title>Login</title>
</head>

<body>


<?php

    // get UserInfo function - use it when you want to get information
    function getUserInfo()   
    {
         try {
          // Returns a `FacebookFacebookResponse` object
          // $response = $fb->get('/me?fields=email', $accessToken);
         
          $response = $fb->get('/me?fields=id, name, email', $accessToken);
          $userNode = $response->getGraphUser();
         
          echo '<h3> Users Information </h3>';
          /*
          echo '<pre>';
          print_r ($userNode);         
          echo '</pre>';
          */
                   
          echo '<h1> Id: </h1>';
          echo ($userNode["id"]);
         
          echo '<h1> Name: </h1>';
          echo ($userNode["name"]);
         
          echo '<h1> Email: </h1>';
          echo ($userNode["email"]);
                   
          echo "<br>";
         
        } catch(FacebookExceptionsFacebookResponseException $e) {
          echo 'Graph returned an error: ' . $e->getMessage();
          exit;
         
        } catch(FacebookExceptionsFacebookSDKException $e) {
          echo 'Facebook SDK returned an error: ' . $e->getMessage();
          exit;
        }
    } 
?>


<?php

    foreach ($_COOKIE as $k=>$v)
    {
        if (strpos($k, "FBRLH_") != FALSE)
        $_SESSION[$k]  = $v;
    }

    // ph?i có session_id
    if(!session_id()) {
        session_start();

    }
 

  // always define the SDK source with /facebook-sdk-v5/
   define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-sdk-v5/');
   require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

      
   $fb = new FacebookFacebook([
          'app_id'          => '144224829331429', // Replace {app-id} with your app id
          'app_secret'      => 'ff0af80e8d80467adadbf8fa32e6c312',
          'default_graph_version' => 'v2.6',
          ]);

    $helper = $fb->getRedirectLoginHelper();
     
       

    try {
      $accessToken = $helper->getAccessToken();   
     
    } catch(FacebookExceptionsFacebookResponseException $e) {
      // When Graph returns an error
      echo 'Graph returned an error: ' . $e->getMessage();
      exit;
     
    } catch(FacebookExceptionsFacebookSDKException $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;
    }

    // Logged in
  
    // The OAuth 2.0 client handler helps us manage access tokens
    $oAuth2Client = $fb->getOAuth2Client();
   
    // Get the access token metadata from /debug_token
    $tokenMetadata = $oAuth2Client->debugToken($accessToken);
   

    // Validation (these will throw FacebookSDKException's when they fail)
    $tokenMetadata->validateAppId('144224829331429'); // Replace {app-id} with your app id
    // If you know the user ID this access token belongs to, you can validate it here
    //$tokenMetadata->validateUserId('123');
    $tokenMetadata->validateExpiration();
   
    if (! $accessToken->isLongLived()) {
      // Exchanges a short-lived access token for a long-lived one
      try {
        $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
      } catch (FacebookExceptionsFacebookSDKException $e) {
        echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>nn";
        exit;
      }
   
    /*
      echo '<h3>Long-lived</h3>';
      echo '<pre>';
      print_r($accessToken->getValue());
      echo '</pre>';
      echo '<br>';
      */
    }
   
    $_SESSION['fb_access_token'] = (string) $accessToken;   
 
   
  
          try {
           
            $response = $fb->get('/203174996740517/likes?fields=id, name, pic, username, picture, link', $accessToken);
            $graphObject = $response->getGraphEdge();
           
            /*
            echo '<pre>';
            print_r ($graphObject);
            echo '</pre>';
           
            echo '<hr>';       
            */          


           // echo $graphObject[0]['id'] . "<br>";

            $i =  0;
            foreach ($graphObject as $obj)
            {
                $i =  $i + 1;
                echo $i;
                echo '<h3> Id       = ' . $obj['id'] . '</h3>' ;          
                echo '<h3> name     = ' . $obj['name'] . '</h3>';
                echo '<h3> pic      = ' . $obj['pic'] . '</h3>';
                echo '<h3> username = ' . $obj['username'] . '</h3>';
                echo '<h3> picture  = ' . $obj['picture']["url"] . '</h3>';
                echo '<h3> link     = ' . $obj['link'] . '</h3>';
            }
   
                   
          echo "<br>";        
         
        } catch(FacebookExceptionsFacebookResponseException $e) {
          echo 'Graph returned an error: ' . $e->getMessage();
          exit;
         
        } catch(FacebookExceptionsFacebookSDKException $e) {
          echo 'Facebook SDK returned an error: ' . $e->getMessage();
          exit;
        }

   
    // User is logged in with a long-lived access token.
    // You can redirect them to a members-only page.
    // header('Location: https://vilh.heroku.com/members.php');

?>

</body>
</html>

If you don’t have hosting for test, you can use Heroku cloud platform to test it! By upload to heroku. You can see this link (This can help you deploy any project to Heroku)

If you have any question or feedback, leave your comment, we can discuss about it!
Zidane
http://learn-tech-tips.blogspot.com/