sâmbătă, 15 ianuarie 2011

Login cu Facebook

Foarte multe aplicații web care interacționează cu utilizatorii au adoptat sistemul de Login prin Facebook.Astfel, o parte din informațiile utilizatorului vor fi foarte ușor transferate de la facebook la aplicație. Utilizatorul este în acest fel avantajat, deoarece nu mai este plimbat pentru confirmare și validare de cont.Voi face o mică de monstrație cum se face acest lucru. În primul rând se va înregistra aplicația pentru care se dorește sistemul de logare.

In continuare, în pagina noastră vom adăuga butonul de Facebook Login/Logout.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>FBApps</title>
  </head>
  <body>
    <h1>FBApps</h1>
    <p><fb:login-button autologoutlink="true"></fb:login-button></p>
    <p><fb:like></fb:like></p>

    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({appId: '160960950619062', status: true, cookie: true,
                 xfbml: true});
      };
      (function() {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = document.location.protocol +
          '//connect.facebook.net/ro_RO/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
  </body>
</html>

exemplul preluat de pe developers.facebook.com.
Pe partea de server vom prealua cu php un obiect de tip json, care in urma acceptului utilizatorului ca anumite informatii de pe profilul sau de facebook sa fie utilizate de aceasta aplicatie.

if(isset($_COOKIE['fbs_' . $YOUR_APP_ID]))
    {
        $cookie = get_facebook_cookie($YOUR_APP_ID, $YOUR_APP_SECRET);
        $user  = json_decode(file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token']));
           
        if ($cookie)  
        {
            if (!isset($_SESSION['user_id']) ||
                $_SESSION['user_id'] == -1)
            {
                verifyUser($user);
            }
            //echo"<p class='welcome'> Welcome <span>".  $user->name.'</span></p>';
        }           
    }
  





function get_facebook_cookie($app_id, $application_secret)
    {
        $args = array();
       
        parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
          ksort($args);
          $payload = '';
         
          foreach ($args as $key => $value)
            if ($key != 'sig')
                $payload .= $key . '=' . $value;
         
          if (md5($payload . $application_secret) != $args['sig'])
            return null;
         
          return $args;
    }


//in functia  verifyUser($user) putem verifica existenta userului in baza de date.(daca userul este nou il adaugam in propria baza de date)
Exemplu:
 

Enhanced by Zemanta

Niciun comentariu:

Trimiteți un comentariu