Rumah >pembangunan bahagian belakang >tutorial php >Log masuk sosial di PHP dengan hybridauth
Banyak laman web moden membolehkan pengguna log masuk melalui akaun rangkaian sosial mereka. Sebagai contoh, komuniti SitePoint membolehkan pengguna log masuk dengan akaun Facebook, Twitter, Google, Yahoo, atau GitHub mereka tanpa mendaftar untuk akaun baru.
Hybridauth bertindak sebagai API abstrak antara aplikasi dan pelbagai API sosial dan penyedia identiti.
mata utama
Pemasangan
Komposer disyorkan untuk memasang HybridAuth. Kami juga akan menggunakan Slim sebagai asas untuk aplikasi sampel.
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
log masuk sosial dengan hybridauth
untuk menggunakan hybridauth, salin dan /vendor/hybridauth/hybridauth/hybridauth
(fail endpoint hybridauth) dalam folder config.php
ke folder root projek anda. index.php
ke index.php
kerana hybrid.php
akan digunakan oleh kerangka Slim untuk logik aplikasi demo kami. index.php
dengan aplikasi anda (mis. Facebook, aplikasi Twitter). config.php
. http://slim.local
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>Nota: Parameter
mesti menunjuk pada fail endpoint hybridauth, dalam kes ini base_url
. hybrid.php
Seterusnya, muatkan autoloader vendor dan instantiate kelas.
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>Gunakan kaedah
untuk mengesahkan pengguna menggunakan pembekal yang diberikan. authenticate
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>untuk Twitter:
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>untuk google:
Parameter yang diluluskan ke
mesti sepadan dengan kekunci array pembekal dalam fail<code>$adapter = $hybridauth->authenticate( "Google" );</code>.
Selepas pengesahan, gunakan kaedah
untuk mendapatkan data profil pengguna. getUserProfile()
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
akan menjadi objek yang mengandungi data profil pengguna yang dikembalikan. $user_profile
dari GitHub.php
ke lokasi dalam permohonan (dalam hal ini direktori pembekal). Muatkan fail menggunakan pembalut pembekal, di mana vendor/hybridauth/hybridauth/additional-providers/hybridauth-github/Providers
adalah laluan ke fail github dan path
adalah nama kelas PHPnya. class
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>Gunakan kaedah Hybridauth
untuk mengesahkan pengguna menggunakan GitHub, seperti yang ditunjukkan di bawah: authenticate()
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
Pelaksanaan log masuk sosial
Biasanya, setiap laman web dengan sistem log masuk dan pendaftaran menggunakan alamat e -mel pengguna atau nama pengguna untuk mengenal pasti dan log masuk ke akaun mereka. Jika anda merancang untuk melaksanakan log masuk sosial, disarankan untuk tidak menggunakan nama pengguna atau e -mel pengguna untuk pengesahan.Salah satu sebab untuk membantah amalan ini ialah, sebagai contoh, Twitter tidak mengembalikan alamat e -mel pengguna yang telah disahkan melaluinya. Iaitu, data profil yang dikembalikan tidak mengandungi e -mel pengguna.
Kebanyakan, jika tidak semua, penyedia sosial, seperti Facebook, Twitter, Google, LinkedIn dan juga GitHub, mengembalikan nombor ID pengguna yang unik selepas kebenaran.
Jangan log masuk ke akaun pengguna menggunakan e -mel pengguna, tetapi gunakan pengenalpastian yang dikembalikan oleh pembekal sosial, seperti yang ditunjukkan di bawah: Buat akaun pengguna jika pengguna tidak mempunyai akaun; akaun pergi ke laman web.
Menulis aplikasi demo
Kami akan menggunakan rangka kerja Slim PHP untuk membina aplikasi web mudah untuk menunjukkan contoh praktikal bagaimana untuk melaksanakan log masuk sosial menggunakan hybridauth.Saya menganggap anda mempunyai rangka kerja hybridauth dan tipis. Jika tidak, rujuk kepada panduan pemasangan di atas.
Struktur Aplikasi
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>Ini adalah SQL untuk jadual pangkalan data.
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>menulis model aplikasi
Ruang nama fail adalah model, diikuti dengan definisi kelas dan pembina.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
Kaedah mengembalikan benar jika pengenal (nombor pengenalan pengguna) sudah ada dalam pangkalan data, jika tidak, pulangan palsu. identifier_exists
<code>$user_profile = $adapter->getUserProfile();</code>
Kaedah Masukkan data profil pengguna ke dalam pangkalan data. register_user
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>
menambah sesi pengguna yang dibuat ke sesi HybridAuth apabila dipanggil (dibuat selepas pembekal berjaya memberi kuasa kepada pengguna). login_user
<code>$adapter = $hybridauth->authenticate( "Github" );</code>
kaedah memadam atau memusnahkan sesi pengguna apabila mengklik pautan logout. logout_user
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>Akhir sekali, kaedah getter mengembalikan nama pengguna, e -mel, dan url avatar.
<code>{ "require": { "slim/slim": "2.*", "hybridauth/hybridauth": "2.3.0" } }</code>
Daftar Autoloader PSR-4 untuk kelas model dengan menambahkan kod berikut ke fail komposer.json anda.
<code>return [ "base_url" => "http://slim.local/", "providers" => [ "Google" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], ], "Facebook" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "trustForwarded" => false ], "Twitter" => [ "enabled" => true, "keys" => [ "key" => "", "secret" => "" ] ], ], "debug_mode" => true, "debug_file" => "bug.txt", ];</code>
run composer dump-autoload
. vendor/autoload.php
index.php
3
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>Buat sumber pangkalan data Slim Singleton yang akan mengembalikan contoh sambungan pangkalan data apabila dipanggil.
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>Satu lagi sumber tunggal yang mengembalikan contoh hybridauth juga dibuat.
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>Mintaate kelas model aplikasi dengan lulus sambungan pangkalan data sebagai parameter.
<code>$adapter = $hybridauth->authenticate( "Google" );</code>Fungsi
berikut apabila ditambah sebagai parameter ke laluan, jika pengguna tidak log masuk, ia akan mengarahkannya ke halaman log masuk.
<code>$user_profile = $adapter->getUserProfile();</code>
mengalihkan pengguna log keluar ke halaman log masuk apabila dia mengakses halaman rumah atau halaman indeks aplikasi. authenticate
<code>"Github" => [ "enabled" => true, "keys" => [ "id" => "", "secret" => "" ], "wrapper" => [ "path" => "providers/GitHub.php", "class" => "Hybrid_Providers_GitHub" ] ]</code>Berikut adalah definisi penghalaan untuk pautan log masuk sosial. Iaitu, apabila pautan
diklik, HybridAuth mengalihkan pengguna ke Facebook untuk kebenaran. Begitu juga untuk Twitter
, Google<code>$adapter = $hybridauth->authenticate( "Github" );</code>dan semua penyedia yang disokong lain.
http://slim.local/login/facebook
http://slim.local/login/twitter
Memanggil kaedah http://slim.local/login/google
<code>|-scr/ |----App_Model.php |-templates/ |----login.php |----welcome.php |-vendor/ |-composer.json |-config.php |-hybrid.php |-index.php |-.htaccess</code>akan mengisi data profil pengguna.
authenticate()
Panggil kaedah
$user_profile
Ini adalah kod untuk log keluar laluan.
identifier_exists()
Kaedah
Laluan halaman selamat datang diarahkan oleh pengguna selepas log masuk:
<code class="language-sql">CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), `identifier` varchar(50) NOT NULL, UNIQUE KEY `identifier` (`identifier`), `email` varchar(50) DEFAULT NULL, `first_name` varchar(20) DEFAULT NULL, `last_name` varchar(20) DEFAULT NULL, `avatar_url` varchar(255) ) ENGINE=InnoDB;</code>
logout_user
Akhirnya, jalankan aplikasi Slim. Hybrid_Auth::logoutAllProviders()
Lihat repositori GitHub aplikasi untuk kod sumber lengkap.
<code class="language-php"><?php namespace Model; class App_Model { /** @var object Database connection */ private $conn; /** * Instantiate the model class. * * @param object $db_connection DB connection */ public function __construct(\PDO $db_connection) { $this->conn = $db_connection; } // ... rest of the methods ... }</code>
Kesimpulan
<code class="language-php">/** * Check if a HybridAuth identifier already exists in DB * * @param int $identifier * * @return bool */ public function identifier_exists($identifier) { try { $sql = 'SELECT identifier FROM users'; $query = $this->conn->query($sql); $result = $query->fetchAll(\PDO::FETCH_COLUMN, 0); return in_array($identifier, $result); } catch ( \PDOException $e ) { die( $e->getMessage() ); } }</code>
Dalam artikel ini, kami belajar bagaimana mengintegrasikan keupayaan log masuk sosial dengan laman web menggunakan perpustakaan Hybridauth PHP yang kuat dan mantap.
Jika anda mempunyai sebarang pertanyaan atau sumbangan, sila beritahu kami dalam komen.
FAQ (FAQ) untuk log masuk sosial dengan PHP dan Hybridauth
HybridAuth adalah perpustakaan log masuk sosial sumber terbuka yang popular. Ia membolehkan pemaju web dengan mudah membina aplikasi sosial dengan menyediakan cara mudah untuk mengesahkan pengguna melalui akaun media sosial mereka. Hybridauth bertindak sebagai API abstrak antara aplikasi dan pelbagai API sosial dan penyedia identiti seperti Facebook, Twitter, dan Google. Ia berfungsi dengan mengintegrasikan dengan sistem log masuk sedia ada dalam aplikasi PHP dan menambah keupayaan log masuk sosial.
Hybridauth boleh dipasang melalui komposer (alat pengurusan ketergantungan dalam PHP). Selepas pemasangan, anda perlu mengkonfigurasinya dengan menubuhkan pembekal yang anda mahu gunakan (rangkaian sosial). Setiap penyedia memerlukan satu set parameter yang unik, seperti kunci dan kunci, yang boleh anda peroleh dengan membuat aplikasi pada platform pemaju setiap rangkaian sosial.
Hybridauth sangat selamat kerana ia menggunakan OAuth, standard perwakilan akses terbuka. OAuth menyediakan akses yang selamat, yang bermaksud bahawa pengguna boleh memberikan kebenaran laman web untuk mengakses maklumat mereka di laman web lain tanpa memberikannya kata laluan. Ini menjadikan Hybridauth sebagai pilihan yang selamat untuk log masuk sosial.
Ya, Hybridauth boleh digunakan di beberapa laman web. Anda hanya perlu menggunakan Perpustakaan Konfigurasi URL Panggilan Betul untuk setiap laman web. Ini menjadikannya penyelesaian yang fleksibel untuk pemaju yang menguruskan beberapa laman web.
Hybridauth mempunyai sistem pengendalian ralat terbina dalam. Apabila ralat berlaku, ia melemparkan pengecualian yang boleh anda tangkap dan mengendalikan berdasarkan dasar pengendalian ralat aplikasi anda. Ini menjadikan masalah debug dan membetulkan lebih mudah.
Ya, anda boleh menyesuaikan rupa dan gaya butang log masuk sosial. Hybridauth menawarkan keupayaan log masuk sosial, tetapi reka bentuk dan susun atur butang sepenuhnya terpulang kepada anda.
Mengemas kini Hybridauth semudah menjalankan perintah dalam komposer. Ini memastikan bahawa anda sentiasa mempunyai versi terkini dengan semua patch keselamatan dan kemas kini.
Ya, Hybridauth bukan rangka kerja dan boleh digunakan dengan rangka kerja PHP. Ini menjadikannya pilihan serba boleh untuk pemaju menggunakan rangka kerja PHP yang berbeza.
Ujian log masuk sosial secara tempatan boleh menjadi rumit kerana rangkaian sosial memerlukan URL panggil balik yang sah. Walau bagaimanapun, anda boleh mendedahkan pelayan tempatan anda ke Internet menggunakan alat seperti NGROK dan menggunakan URL tersebut sebagai URL Panggilan balik.
Tidak, Hybridauth direka untuk log masuk sosial. Untuk pengesahan e -mel dan kata laluan tradisional, anda perlu menggunakan perpustakaan PHP yang lain atau membina sistem pengesahan anda sendiri.
Output mengekalkan pemformatan dan penempatan imej asal.
Atas ialah kandungan terperinci Log masuk sosial di PHP dengan hybridauth. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!