PHP Kullanarak Twitter ile Giriş Yapın

PHP Kullanarak Twitter ile Giriş Yapın

Twitter internetteki en popüler sosyal ağlardan biridir ve milyonlarca kullanıcı twitter ile kayıtlıdır. Twitter Giriş kullanarak web sitenizin abone sayısını artırabilirsiniz.

Günümüzde kullanıcılar büyük kayıt formlarını doldurmakla ilgilenmiyor. Twitter Login API bu sorunu çözmeye yardımcı olur.
Twitter API'sı web sitenizin ziyaretçilerinin sitenizdeki Twitter hesabına giriş yapmasına izin vermeden sitenize kayıt olmanızı sağlar. Twitter OAuth PHP kütüphanesi, web geliştiricisinin twitter giriş sistemini hızlı, kolay ve güçlü bir şekilde entegre etmesine yardımcı oluyor. Bu derste,

Kullanıcı Girişini Twitter API'siyle nasıl uygulayacağımızı ve kullanıcı bilgilerini PHP kullanarak MySQL veritabanına nasıl saklayacağımızı göstereceğiz. Twitter Uygulamaları oluşturmak ve PHP kullanarak twitter ile oturum açmak için tüm süreci inceleyeceğiz. Twitter OAuth PHP kitaplığı, Twitter’ın REST API'sı için OAuth’u destekleyen komut dosyasında kullanılacaktır.
Başlamadan önce, Twitter OAuth giriş komut dosyanızın klasör ve dosya yapısına bakın.

  • src/
    • OAuth.php
    • twitteroauth.php
  • User.php
  • twConfig.php
  • index.php
  • logout.php
  • images/
  • style.css

Twitter Uygulamaları Oluşturma
Twitter API'sine erişmek için bir Twitter Uygulaması oluşturmanız ve key ile secret kodlarını almanız gerekir. Henüz bir Twitter Uygulaması oluşturmadıysanız, Uygulama Yönetimi sayfasından bir Twitter Uygulaması oluşturmak ve yapılandırmak için aşağıdaki adımları izleyin.

  1. İlk önce Uygulama Yönetimi sayfasına gidin ve Twitter hesabınızla giriş yapın.
  2. Aşağıdaki ayrıntıları içeren Yeni Uygulama oluşturun.
    • İsim: Uygulama Adınız. Bu, kullanıcıya yetki verirken gösterilir.
    • Açıklama: Uygulama Tanımınız. Bu, kullanıcıya yetki verirken gösterilir.
    • Web sitesi: Uygulama web siteniz.
    • Geri Arama URL'si (*): Yetkilendirildikten sonra, bu URL oauth_token ile çağrılır.
  3. Okuma ve Yazma veya Okuma, Yazma ve Doğrudan mesajlara erişme için uygulama iznini değiştirin. Uygulamalar iznini değiştirmek için Twitter hesabınıza bir cep telefonu numarası eklemeniz gerekir.

Twitter App oluşturma tamamlandığında, OAuth test etmek için Test OAuth'a tıklayın.
Test ettikten sonra OAuth Ayarları sayfasına yönlendirilirsiniz. OAuth Ayarları sayfasından, key ve secret kodlarını alırsınız. Komut dosyasında daha sonra kullanmak için bu key ve secret kodlarını not edin.

Veritabanı Tablosu Oluşturma
Kullanıcı bilgilerini Twitter veritabanından alıp saklamak için MySQL veritabanınızda bir tablonun (kullanıcıların) oluşturulması gerekir. Öncelikle bir veritabanı (db gibi) oluşturun ve veritabanında aşağıdaki SQL'i çalıştırın. Aşağıdaki SQL, Twitter profil bilgilerini tutmak için veritabanındaki bazı temel alanlara sahip bir kullanıcı tablosu oluşturur.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `oauth_provider` enum('','facebook','google','twitter','linkedin') COLLATE utf8_unicode_ci NOT NULL, `oauth_uid` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `first_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `gender` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `locale` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `picture` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `username` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Twitter OAuth PHP
src/ dizini PHP için Twitter OAuth kütüphanesini içerir ve ilgili tüm dosyalar kaynak kodumuza dahil edilir.

Kullanıcı sınıfı (User.php)
Kullanıcı sınıfı, PHP ve MySQL kullanarak Twitter profil bilgilerini veritabanına eklemek veya güncellemek için kullanılır. MySQL veritabanı kimlik bilgilerinizi belirtin ($dbHost, $dbUsername, $dbPassword,$dbName) ve kullanıcının profil bilgilerini saklamak için tablo tablo adı ($userTbl).

<?phpclass User {
    private $dbHost     "localhost";
    private $dbUsername "root";
    private $dbPassword "*****";
    private $dbName     "codexworld";
    private $userTbl    'users';
    
    function __construct(){
        if(!isset($this->db)){
            // Connect to the database
            $conn = new mysqli($this->dbHost$this->dbUsername$this->dbPassword$this->dbName);
            if($conn->connect_error){
                die("Failed to connect with MySQL: " $conn->connect_error);
            }else{
                $this->db $conn;
            }
        }
    }
    
    function checkUser($userData = array()){
        if(!empty($userData)){
            //Check whether user data already exists in database
            $prevQuery "SELECT * FROM ".$this->userTbl." WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'";
            $prevResult $this->db->query($prevQuery);
            if($prevResult->num_rows 0){
                //Update user data if already exists
                $query "UPDATE ".$this->userTbl." SET first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', picture = '".$userData['picture']."', username = '".$userData['username']."', link = '".$userData['link']."', modified = '".date("Y-m-d H:i:s")."' WHERE oauth_provider = '".$userData['oauth_provider']."' AND oauth_uid = '".$userData['oauth_uid']."'";
                $update $this->db->query($query);
            }else{
                //Insert user data
                $query "INSERT INTO ".$this->userTbl." SET oauth_provider = '".$userData['oauth_provider']."', oauth_uid = '".$userData['oauth_uid']."', first_name = '".$userData['first_name']."', last_name = '".$userData['last_name']."', email = '".$userData['email']."', gender = '".$userData['gender']."', locale = '".$userData['locale']."', picture = '".$userData['picture']."', username = '".$userData['username']."', link = '".$userData['link']."', created = '".date("Y-m-d H:i:s")."', modified = '".date("Y-m-d H:i:s")."'";
                $insert $this->db->query($query);
            }
            
            //Get user data from the database
            $result $this->db->query($prevQuery);
            $userData $result->fetch_assoc();
        }
        
        //Return user data
        return $userData;
    }
}?>

Twitter API Yapılandırması (twConfig.php)
TwConfig.php dosyasında, Twitter API'sine bağlanmak için Twitter Uygulamanızın Key ($consumerKey), Secret ($consumerSecret) ve Geri Arama URL'sini ($redirectURL) tanımlayın.

<?phpif(!session_id()){
    session_start();
}//Include Twitter client library include_once 'src/twitteroauth.php';/*
 * Configuration and setup Twitter API
 */$consumerKey    'InsertYourConsumerKey';$consumerSecret 'InsertYourConsumerSecret';$redirectURL    'http://localhost/twitter_login_php/';?>

Twitter Kimlik Doğrulama ve Profil Bilgileri (index.php)
Öncelikle, Twitter ile giriş yapınız. Kullanıcı Twitter hesaplarıyla doğruladıktan sonra, profil bilgileri alınacak ve veritabanına eklemek için Kullanıcı sınıfına geçecektir. Ayrıca, profil detayları, son tweet'ler ve çıkış tuşuyla tweet mesajı seçeneği görüntülenecektir.

<?php//start sessionsession_start();//Include Twitter config file && User classinclude_once 'twConfig.php';
include_once 'User.php';//If OAuth token not matchedif(isset($_REQUEST['oauth_token']) && $_SESSION['token'] !== $_REQUEST['oauth_token']){
    //Remove token from session
    unset($_SESSION['token']);
    unset($_SESSION['token_secret']);
}//If user already verified if(isset($_SESSION['status']) && $_SESSION['status'] == 'verified' && !empty($_SESSION['request_vars'])){
    //Retrive variables from session
    $username         $_SESSION['request_vars']['screen_name'];
    $twitterId        $_SESSION['request_vars']['user_id'];
    $oauthToken       $_SESSION['request_vars']['oauth_token'];
    $oauthTokenSecret $_SESSION['request_vars']['oauth_token_secret'];
    $profilePicture   $_SESSION['userData']['picture'];
    
    /*
     * Prepare output to show to the user
     */
    $twClient = new TwitterOAuth($consumerKey$consumerSecret$oauthToken$oauthTokenSecret);
    
    //If user submits a tweet to post to twitter
    if(isset($_POST["updateme"])){
        $my_update $twClient->post('statuses/update', array('status' => $_POST["updateme"]));
    }
    
    //Display username and logout link
    $output '<div class="welcome_txt">Welcome <strong>'.$username.'</strong> (Twitter ID : '.$twitterId.'). <a href="logout.php">Logout</a>!</div>';
    
    //Display profile iamge and tweet form
    $output .= '<div class="tweet_box">';
    $output .= '<img src="'.$profilePicture.'" width="120" height="110"/>';
    $output .= '<form method="post" action=""><table width="200" border="0" cellpadding="3">';
    $output .= '<tr>';
    $output .= '<td><textarea name="updateme" cols="60" rows="4"></textarea></td>';
    $output .= '</tr>';
    $output .= '<tr>';
    $output .= '<td><input type="submit" value="Tweet" /></td>';
    $output .= '</tr></table></form>';
    $output .= '</div>';
    
    //Get latest tweets
    $myTweets $twClient->get('statuses/user_timeline', array('screen_name' => $username'count' => 5));
    
    //Display the latest tweets
    $output .= '<div class="tweet_list"><strong>Latest Tweets : </strong>';
    $output .= '<ul>';
    foreach($myTweets  as $tweet){
        $output .= '<li>'.$tweet->text.' <br />-<i>'.$tweet->created_at.'</i></li>';
    }
    $output .= '</ul></div>';
}elseif(isset($_REQUEST['oauth_token']) && $_SESSION['token'] == $_REQUEST['oauth_token']){
    //Call Twitter API
    $twClient = new TwitterOAuth($consumerKey$consumerSecret$_SESSION['token'] , $_SESSION['token_secret']);
    
    //Get OAuth token
    $access_token $twClient->getAccessToken($_REQUEST['oauth_verifier']);
    
    //If returns success
    if($twClient->http_code == '200'){
        //Storing access token data into session
        $_SESSION['status'] = 'verified';
        $_SESSION['request_vars'] = $access_token;
        
        //Get user profile data from twitter
        $userInfo $twClient->get('account/verify_credentials');
        //Initialize User class
        $user = new User();
        
        //Insert or update user data to the database
        $name explode(" ",$userInfo->name);
        $fname = isset($name[0])?$name[0]:'';
        $lname = isset($name[1])?$name[1]:'';
        $profileLink 'https://twitter.com/'.$userInfo->screen_name;
        $twUserData = array(
            'oauth_provider'=> 'twitter',
            'oauth_uid'     => $userInfo->id,
            'first_name'    => $fname,
            'last_name'     => $lname,
            'email'         => '',
            'gender'        => '',
            'locale'        => $userInfo->lang,
            'picture'       => $userInfo->profile_image_url,
            'link'          => $profileLink,
            'username'      => $userInfo->screen_name
        );
        
        $userData $user->checkUser($twUserData);
        
        //Storing user data into session
        $_SESSION['userData'] = $userData;
        
        //Remove oauth token and secret from session
        unset($_SESSION['token']);
        unset($_SESSION['token_secret']);
        
        //Redirect the user back to the same page
        header('Location: ./');
    }else{
        $output '<h3 style="color:red">Some problem occurred, please try again.</h3>';
    }
}else{
    //Fresh authentication
    $twClient = new TwitterOAuth($consumerKey$consumerSecret);
    $request_token $twClient->getRequestToken($redirectURL);
    
    //Received token info from twitter
    $_SESSION['token']         = $request_token['oauth_token'];
    $_SESSION['token_secret']= $request_token['oauth_token_secret'];
    
    //If authentication returns success
    if($twClient->http_code == '200'){
        //Get twitter oauth url
        $authUrl $twClient->getAuthorizeURL($request_token['oauth_token']);
        
        //Display twitter login button
        $output '<a href="'.filter_var($authUrlFILTER_SANITIZE_URL).'"><img src="images/sign-in-with-twitter.png" width="151" height="24" border="0" /></a>';
    }else{
        $output '<h3 style="color:red">Error connecting to twitter! try again later!</h3>';
    }
}?><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Login with Twitter using PHP by CodexWorld</title>
    <link rel='stylesheet' type='text/css' href='style.css'>
</head>
<body>
    <!-- Display login button / profile information -->    <?php echo $output?></body>
</html>

Çıkış (logout.php)
Bu dosya, kullanıcının Twitter hesabından çıkış yapmak için kullanılır.

<?php//Start sessionsession_start();//Remove user data from sessionunset($_SESSION['userdata']);//Destroy all session datasession_destroy();//Redirect to the homepageheader("Location:index.php");?>

 

Twitter Hesabı'ndan Kullanıcı E-postası Alın
Temel olarak, Twitter kimlik doğrulamasından sonra kullanıcı e-postasını geri göndermez. Kullanıcının E-posta Adresini almak için, uygulamanızın Twitter tarafından beyaz listeye alınması gerekir. Kullanıcı e-posta adresini almak ve saklamak için aşağıdaki adımları izleyin.

1. İsteğinizi göndermek için bu formu kullanın. Biraz zaman alacak lütfen sabırlı olun.
2. Beyaz listeye eklendikten sonra, Uygulama Yönetimi'nde uygulama izniniz altında, kullanıcıların e-posta adreslerini iste onay kutusu kullanılabilir. Ayarlar altında, Gizlilik Politikası URL'si ve Hizmet Şartları URL'si alanları kullanılabilir. Etkinleştirilirse, kullanıcılarınıza uygulamanızın OAuth iletişim kutusundaki e-postalarına erişebileceği bildirilir.
3. Dizini aç. php dosyasını ve get() işlevinde include_email parametresini kullanın. Bunu yapmak için $user_info değişken satırı değerini aşağıdaki kod satırıyla değiştirin (muhtemelen satır no. 74).

$userInfo $connection->get('account/verify_credentials', ['include_email' => 'true']);

4. Artık kullanıcı e-posta adresini $userInfo->email kullanarak alabilirsiniz. Kullanıcı e-postasını ($userInfo->email ) $twUserData dizisinde sağlayın.

E-posta alanı, kullanıcı tablosuna zaten eklenmiş olduğundan, veritabanı tablosunu değiştirmenize gerek yoktur.

Sonuç
Twitter giriş entegrasyon sürecini mümkün olduğunca basit hale getirmeye çalıştık. Scripti kullanarak, Twitter giriş sistemini web sitenize kolayca ekleyebilirsiniz. Sadece birkaç dosya eklemeniz ve Twitter kullanarak giriş sistemini entegre etmek için bazı minimum ayarları belirlemeniz gerekir.

 

 


Bu yazıyı 5 yıldız üzerinden kaçla değerlendirirsiniz?
Daha önce bu yazı 0 kez değerlendirilmiş ve ortalama 0 yıldız verilmiş.
Bu yazı daha önce 334 kez okundu.

Bu yazıyı beğendiniz mi? Haber bültenimize katılarak buna benzer yeni yazılardan haberdar olun!

Açılacak sayfada "Ben robot değilim" işaretleyip "Complete Subscription Request" yazan butona tıklayınız!

Yorum Yaz

    Yorumlar

    Bu yazıya henuz bir yorum yapılmamış. İlk yorumu yapan siz olun!
İstanbul Firma, İlan, Gezi Rehberi ve Haberleri instagram takipçi satın al
Windows 10 Açılmama Sorunu Çözümü

Windows 10 Açılmama Sorunu Çözümü

14 Tem 2018 / Bilgisayar & Windows & Linux
Chromium Nedir?

Chromium Nedir?

14 Tem 2018 / Program İndir & İnceleme
YouTube Gizli Mod Özelliğini Devreye Soktu

YouTube Gizli Mod Özelliğini Devreye Soktu

13 Tem 2018 / İnternet & Sosyal Medya