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
- Hybridauth adalah perpustakaan PHP yang direka untuk memudahkan integrasi log masuk sosial ke laman web anda dan bertindak sebagai lapisan tengah antara aplikasi anda dan pelbagai API sosial.
- Adalah disyorkan untuk memasang hybridauth melalui komposer, dan kelayakan khusus diperlukan untuk setiap rangkaian sosial seperti Facebook, Google, dan Twitter berfungsi dengan baik.
- Perpustakaan ini menggunakan OAuth untuk akses yang selamat, memastikan kelayakan pengguna dilindungi semasa pengesahan.
- HybridAuth membolehkan proses pengesahan pengguna tersuai, tidak bergantung pada e -mel atau nama pengguna, tetapi menggunakan pengenal unik yang disediakan oleh rangkaian sosial.
- Tutorial ini menyediakan demonstrasi praktikal menggunakan rangka kerja Slim PHP, yang memperincikan langkah-langkah dari menubuhkan persekitaran untuk menulis aplikasi demo yang lengkap yang mengendalikan pendaftaran pengguna, log masuk, dan logout melalui rangkaian sosial.
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>
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>
untuk mengesahkan pengguna menggunakan pembekal yang diberikan. authenticate
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
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
Untuk menambah lebih banyak pembekal, seperti GitHub, salin fail
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>
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>
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
Semua kod untuk model aplikasi hendaklah diletakkan dalam fail app_model.php dalam folder SRC.
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>
<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
Komposer beban dalam aplikasi
Fail secara automatik memuat fail dan instantiates Slim.
index.php
3
<code>require 'vendor/autoload.php'; $hybridauth = new Hybrid_Auth( 'config.php' );</code>
<code>$adapter = $hybridauth->authenticate( "Facebook" );</code>
<code>$adapter = $hybridauth->authenticate( "Twitter" );</code>
<code>$adapter = $hybridauth->authenticate( "Google" );</code>
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>
diklik, HybridAuth mengalihkan pengguna ke Facebook untuk kebenaran. Begitu juga untuk Twitter
, Google<code>$adapter = $hybridauth->authenticate( "Github" );</code>
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>
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:
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;
logout_user
Akhirnya, jalankan aplikasi Slim. Hybrid_Auth::logoutAllProviders()
Lihat repositori GitHub aplikasi untuk kod sumber lengkap.
<?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 ... }
Kesimpulan
/** * 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() ); } }
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
Apa itu Hybridauth dan bagaimana ia digunakan dengan PHP untuk log masuk sosial?
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.
Bagaimana untuk memasang dan mengkonfigurasi Hybridauth dalam aplikasi PHP saya?
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.
Apakah tahap keselamatan hybridauth untuk log masuk 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.
Bolehkah saya menggunakan hybridauth untuk log masuk sosial di beberapa laman web?
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.
Bagaimana menangani kesilapan dalam hybridauth?
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.
Bolehkah saya menyesuaikan rupa dan gaya butang log masuk sosial Hybridauth?
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.
Bagaimana untuk mengemas kini perpustakaan HybridAuth dalam aplikasi PHP saya?
Mengemas kini Hybridauth semudah menjalankan perintah dalam komposer. Ini memastikan bahawa anda sentiasa mempunyai versi terkini dengan semua patch keselamatan dan kemas kini.
Bolehkah saya menggunakan hybridauth dengan kerangka PHP yang lain?
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.
Bagaimana untuk menguji log masuk sosial Hybridauth dalam persekitaran pembangunan tempatan saya?
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.
Bolehkah saya mengesahkan pengguna dengan akaun bukan sosial seperti e-mel dan kata laluan menggunakan hybridauth?
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.
