Facebook арқылы сайтқа кіруге арналған php скрипт



Бұл нұсқаулықта біз Facebook PHP Oauth кітапханасын пайдалана отырып пайдаланушыны аутентификациялауды қарастырамыз. Ол арқылы сіз сайтыңызға facebook арқылы тіркелуді жасай аласыз. Facebook API Key және API құпия кодтарын құруға мүмкіндік береді. Ол кодтар әр бағдарламаға әр түрлі болады. Ол кодтарды алу үшін Facebook Apps бөліміне барып жаңа бағдарлама (қосымша) құруыңыз керек. Солай сіз API Key мен API құпия кодтарын ала аласыз.

Кодтарды алдық, енді оларды қолдану үшін фейсбуктың арнайы php тіліне арналған кітапханасын жүктеп алыңыз. Содан соң өзіміздің арнайы класымызды құрып алуымыз керек. Бірден сол кодты келтіре салайын:

<?php
require 'facebook.php';
class facebook_login
{
    function facebook_login($id, $secret, $callback = "", $permission = 0)
    {
        if (!$permission) {
            $permission = "email,user_birthday,user_location";
        } else {
            $permission = $permission;
        }
        if ($permission == -1) {
            $permission = "";
        }
        $this->ApplicationID     = "$id";
        $this->ApplicationSecret = "$secret";
        $this->CallBack          = "$callback";
        $this->Permission        = "$permission";
        $this->facebook          = new Facebook(array(
            'appId' => $this->ApplicationID,
            'secret' => $this->ApplicationSecret,
            'cookie' => true
        ));
    }
    function connection()
    {
        
        $session = $this->facebook->getSession();
        $me      = null;
        if ($session) {
            try {
                $uid = $this->facebook->getUser();
                $me  = $this->facebook->api('/me');
            }
            catch (FacebookApiException $e) {
                error_log($e);
            }
        }
        
        
        return "<!doctype html>
<html xmlns:fb=\"http://www.facebook.com/2008/fbml\">
<head>
</head>
<body>
<div id=\"fb-root\"></div>
<script>
window.fbAsyncInit = function()
{
FB.init
({
appId : '" . $this->facebook->getAppId() . "',
session : " . json_encode($session) . ",
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Event.subscribe('auth.login', function()
{
window.location.reload();
});
};

(function()
{
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>

<fb:login-button perms=\"" . $this->Permission . "\" onlogin='window.location=parseURL(\");" . $this->CallBack . "\";'>Connect</fb:login-button>
</body>
</html>";
    }
    function InformationInfo()
    {
        if ($_REQUEST["fbs_" . $this->ApplicationID] == "")
            return "Permission Disallow!";
        $PermissionCheck = split(",", $this->Permission);
        $a               = str_ireplace("\"", "", $_REQUEST["fbs_" . $this->ApplicationID]);
        if (!$a) {
            return "Permission Disallow!";
        }
        $user                  = json_decode(file_get_contents('https://graph.facebook.com/me?' . $a));
        $Result["UserID"]      = $user->id;
        $Result["Name"]        = $user->name;
        $Result["FirstName"]   = $user->first_name;
        $Result["LastName"]    = $user->last_name;
        $Result["ProfileLink"] = $user->link;
        $Result["ImageLink"]   = "<img src='/" . $user->id . "/picture' />";
        $Result["About"]       = $user->about;
        $Result["Quotes"]      = $user->quotes;
        $Result["Gender"]      = $user->gender;
        $Result["TimeZone"]    = $user->timezone;
        if (in_array("email", $PermissionCheck)) {
            $Result["Email"] = $user->email;
        }
        if (in_array("user_birthday", $PermissionCheck)) {
            $Result["Birthday"] = $user->birthday;
        }
        if (in_array("user_location", $PermissionCheck)) {
            $Result["PermanentAddress"] = $user->location->name;
            $Result["CurrentAddress"]   = $user->hometown->name;
        }
        return $Result;
    }
    function FBLogin()
    {
        $session = $this->facebook->getSession();
        $me      = null;
        if ($session) {
            try {
                $uid = $this->facebook->getUser();
                $me  = $this->facebook->api('/me');
            }
            catch (FacebookApiException $e) {
                error_log($e);
            }
        }
        if ($me) {
            return $this->InformationInfo();
            //return "<a href=".$this->facebook->getLogoutUrl()."><img src=\"http://static.ak.fbcdn.net/rsrc.php/z2Y31/hash/cxrz4k7j.gif\"></a>";
        } else {
            return $this->connection();
        }
    }
}
?>


Жоғарыдағы келтірілген код өте маңызды, өйткені ол пайдаланушы аутентификация кезінде қандай құқықтар алуын анықтайды. Құқықтың түрлері:

  1. email — пайдаланушының email адресін ала аламыз
  2. user_friends — пайдаланушының достар тізімін ала аламыз
  3. app_friends -
  4. user_location — пайдаланушының мекен-жайы
  5. read_strem — пайдаланушының жарияланымдарын оқи аламыз
  6. friends_online_presence — онлайн достар тізімін қарау
  7. publish_stream — пайдаланушының атынан, оның лентасында жарияланым жасау

Сонымен, аутентификация үшін email және пайдаланушы профилі туралы мәліметтер жеткілікті. Ол туралы құқық үнсіз келісім бойынша сізге беріледі. Ал қалған құқықтарды алу үшін сіз фейсбукқа сұраныс жіберуіңіз қажет. Фейсбук сұранысты, сіздің бағдарламаңызды және сайтыңызда қарастырып оны қабылдайды немесе қабылдамайды. Бұл жағы түсінікті деп ойлаймын. Енді браузерде іске қосатын test.php файлын құрыңыз. Оның ішінде келесі код болуы қажет:

<?php
/*
 * Your facebook convas url and your facebook connect url must be same.
 * I-E your facebook convas url is http://www.example.com/a/abc.php
 * and your facebook connect url also same as http://www.example.com/a/.*
 */
include "facebook.class.php";
/* 
 * Бағдарлама инстансын құру. Өзіңіздің api код пен құпия кодыңызды жазыңыз
 */
$id         = "бағдарлама коды (ID)";
$sec        = "мұнда құпия кодыңызды жазыңыз";
$callback   = "http://www.example.com/abc.php"; // call back url
$permission = "0"; // 0 for all class custome permission or explain ur permission like offline_status, email,sms etc http://developers.facebook.com/docs/authentication/permissions.
$facebook   = new facebook_login($id, $sec, $callback, $permission);

if (is_array($facebook->FBLogin())) {
    print_r($facebook->FBLogin());
} else {
    echo $facebook->FBLogin();
}
?>


Міне, бар болғаны осы. Қиын ештеңесі жоқ.

  • +1
0 пікір
Тек тіркелген қолданушылар ғана пікір қалдыра алады.