PHP kullanarak Google Hesabı ile Giriş Yapın

PHP kullanarak Google Hesabı ile Giriş Yapın

Google oAuth API, web sitelerinde giriş sistemini entegre etmenin kolay ve güçlü bir yolunu sunar. Web geliştiricileri, Google OAuth 2.0'ı kullanarak web uygulamasında giriş ve kayıt sistemini uygulayabilirler. Google giriş sistemi, web sitenizdeki aboneleri artırmaya yardımcı olur.


Günümüzde neredeyse tüm kullanıcıların bir Google hesabı olduğunu düşünürsek ve web sitenize kayıt olmadan Google hesapları ile giriş yapabilirler.

Bu yazıda, Google API PHP kitaplığını kullanarak Google kimlik doğrulamasıyla size basit giriş sistemi entegrasyon sürecini göstereceğiz. İşte size adım adım PHP kullanarak Google hesabıyla giriş yapmak ve kullanıcı bilgilerini MySQL veritabanına kaydetmek için adım adım talimatlar. Google oturum açma komutumuzu kullanarak, web sitenizde PHP'yi kullanarak Google ile Giriş'i kolayca uygulayabilirsiniz.

PHP ve MySQL kullanarak Google ile Giriş'i entegre etmeye başlamadan önce, klasörlere ve dosya yapısına bakın.

index.php
gpConfig.php
User.php
logout.php
src /
Google API, Google Müşteri, Google Oauth ve diğer kütüphaneler
images/

Google Proje Oluşturma

  1. Google Developers Console'a gidin.
  2. Proje açılır listesinden varolan bir projeyi seçin veya Proje oluştur (+) öğesini tıklatarak yeni bir proje oluşturun:
  3. Proje adını girin ve devam etmek için Oluştur'a tıklayın.
  4. Proje adı altında, Google API konsolunun proje kimliği oluşturduğunu göreceksiniz. İsteğe bağlı olarak, bu proje kimliğini Düzenle bağlantısından değiştirebilirsiniz. Ancak proje kimliği benzersiz olmalı.
  5. Oluştur düğmesine tıklayın ve proje birkaç saniye içinde oluşturulacak.
  6. Yeni oluşturulmuş projeyi seçin ve Google+ API hizmetini etkinleştirin.
  7. Kenar çubuğunda API'ler ve Hizmetler bölümü altında Kitaplık'ı seçin.
  8. API listesinde Google+ API hizmetini arayın ve Google+ API'yı seçin.
  9. Google+ API hizmetini etkinleştirmek için ENABLE düğmesini tıklayın.
  10. Kenar çubuğunda, API'ler ve Hizmetler bölümünün altındaki Kimlik Bilgileri'ni seçin.
  11. OAuth izni ekran sekmesini seçin. Bir e-posta adresi seçin
  12. Ürün adını girin ve kaydet'e tıklayın.
  13. Kimlik Bilgileri sekmesini, Kimlik bilgileri oluştur açılır menüsünü ve OAuth istemci kimliğini seçin.
  14. Uygulama türü bölümünde, Web uygulamasını seçin.
  15. Yetkili JavaScript kaynaklarında, uygulama kökeni girin. Uygulamanızın farklı protokollerde, alan adlarında veya alt alan adlarında çalışmasına izin vermek istiyorsanız, birden çok köken girebilirsiniz.
  16. Yetkili yönlendirme URL'ları alanında, yönlendirme URL'sini girin.
  17. Oluştur düğmesine tıklayın.
  18. OAuth istemci detayları ile bir iletişim kutusu görünecek, Müşteri Kimliği ve Müşteri sırrı kopyalanacaktır. Bu Müşteri Kimliği ve Müşteri sırrı, Google API'lerine erişmenizi sağlar.
  19. Aşağıdakileri unutmayın: Bu Client ID ve Client secret, Google API çağrısı komut dosyasında belirtilmelidir. Ayrıca, Yetkili yönlendirme URL'sının, komut dosyasında belirtilen yönlendirme URL'si ile eşleşmesi gerekir.

google

Veritabanı Tablosu Oluşturma
Google+ profili bilgilerini depolamak için bir veritabanı ve bir tablo oluşturmanız gerekir. Öncelikle bir veritabanı (db gibi) oluşturun ve veritabanında aşağıdaki SQL'i çalıştırın. Aşağıdaki SQL, kullanıcı profili bilgilerini eklemek için veritabanına bir kullanıcı tablosu oluşturur.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `oauth_provider` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `oauth_uid` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `first_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(255) 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, `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;

Kullanıcı sayfası (User.php)
Kullanıcı sayfası , kullanıcı verilerini PHP ve MySQL kullanarak veritabanına eklemek veya güncellemek için yardımcı olur. User.php dosyasında, yalnızca MySQL veritabanı kimlik bilgilerinizi ($dbHost, $dbUsername, $dbPassword ve $dbName) ve Google+ profili kullanıcı verilerini depolamak istediğiniz tablo adını ($ userTbl) belirtmeniz gerekir.

<?php
class 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']."', 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']."', 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; }
}
?>

 

Google API Yapılandırması (gpConfig.php)
GpConfig.php dosyasında, Google Project Client ID ($clientId), Client Secret ($clientSecret) ve Callback URL’si ($redirectURL) tanımlayın.

<?php
session_start();
//Include Google client library
include_once 'src/Google_Client.php';
include_once 'src/contrib/Google_Oauth2Service.php';
/* * Configuration and setup Google API */
$clientId = 'InsertGoogleClientID';
$clientSecret = 'InsertGoogleClientSecret';
$redirectURL = 'http://localhost/login_with_google_using_php/';
//Call Google API
$gClient = new Google_Client();
$gClient->setApplicationName('Login to CodexWorld.com');
$gClient->setClientId($clientId);
$gClient->setClientSecret($clientSecret);
$gClient->setRedirectUri($redirectURL);
$google_oauthV2 = new Google_Oauth2Service($gClient);
?>

 

Giriş Yap ve Google+ Profili Verilerini Al (index.php)
Başlangıçta, Google ile giriş yap düğmesi görüntülenir. Kullanıcı Google hesaplarıyla doğruladıktan sonra Google plus profil bilgileri getirilir ve veritabanına eklemek için Kullanıcı sınıfına geçirilir. Ayrıca, çıkış düğmesi ile profil detayları görüntülenecektir.

<?php
//Include GP config file && User class
include_once 'gpConfig.php';
include_once 'User.php';
if(isset($_GET['code'])){ $gClient->authenticate($_GET['code']); $_SESSION['token'] = $gClient->getAccessToken(); header('Location: ' . filter_var($redirectURL, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['token'])) { $gClient->setAccessToken($_SESSION['token']);
}
if ($gClient->getAccessToken()) { //Get user profile data from google $gpUserProfile = $google_oauthV2->userinfo->get(); //Initialize User class $user = new User(); //Insert or update user data to the database $gpUserData = array( 'oauth_provider'=> 'google', 'oauth_uid' => $gpUserProfile['id'], 'first_name' => $gpUserProfile['given_name'], 'last_name' => $gpUserProfile['family_name'], 'email' => $gpUserProfile['email'], 'gender' => $gpUserProfile['gender'], 'locale' => $gpUserProfile['locale'], 'picture' => $gpUserProfile['picture'], 'link' => $gpUserProfile['link'] ); $userData = $user->checkUser($gpUserData); //Storing user data into session $_SESSION['userData'] = $userData; //Render facebook profile data if(!empty($userData)){ $output = '<h1>Google+ Profile Details </h1>'; $output .= '<img src="'.$userData['picture'].'" width="300" height="220">'; $output .= '<br/>Google ID : ' . $userData['oauth_uid']; $output .= '<br/>Name : ' . $userData['first_name'].' '.$userData['last_name']; $output .= '<br/>Email : ' . $userData['email']; $output .= '<br/>Gender : ' . $userData['gender']; $output .= '<br/>Locale : ' . $userData['locale']; $output .= '<br/>Logged in with : Google'; $output .= '<br/><a href="'.$userData['link'].'" target="_blank">Click to Visit Google+ Page</a>'; $output .= '<br/>Logout from <a href="logout.php">Google</a>'; }else{ $output = '<h3 style="color:red">Some problem occurred, please try again.</h3>'; }
} else { $authUrl = $gClient->createAuthUrl(); $output = '<a href="'.filter_var($authUrl, FILTER_SANITIZE_URL).'"><img src="images/glogin.png" alt=""/></a>';
}
?>
<div><?php echo $output; ?></div>
Logout (logout.php)
When the user wishes to logout from their account, the user would be redirected to this file.
<?php
//Include GP config file
include_once 'gpConfig.php';
//Unset token and user data from session
unset($_SESSION['token']);
unset($_SESSION['userData']);
//Reset OAuth access token
$gClient->revokeToken();
//Destroy entire session
session_destroy();
//Redirect to homepage
header("Location:index.php");
?>

 

Sonuç
Google giriş entegrasyon sürecini mümkün olduğunca basit hale getirmeye çalıştık. Scripti kullanarak, Google sistemi ile kolayca web sitenize entegre edebilirsiniz. Bu yazı ve script hakkında herhangi bir sorunuz veya öneriniz varsa, burada yorum yapmaktan çekinmeyin.

 


Bu yazıyı 5 yıldız üzerinden kaçla değerlendirirsiniz?
Daha önce bu yazı 1 kez değerlendirilmiş ve ortalama 4 yıldız verilmiş.
Bu yazı daha önce 1093 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!
" PHP kullanarak Google Hesabı ile Giriş Yapın konulu makalemizde Ogznet.com olarak sizlere PHP kullanarak Google Hesabı ile Giriş Yapın ile ilgili bilgiler aktarmak istedik. Hemen yukarıda PHP kullanarak Google Hesabı ile Giriş Yapın ile ilgili yorum ve görüşleri inceleyerek sizlerde yorum bırakabilirsiniz. "
Reklam Ver instagram takipçi satın al