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>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
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>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
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>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
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>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:
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

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

Untuk menentukan kekuatan kata laluan, perlu menggabungkan pemprosesan biasa dan logik. Keperluan asas termasuk: 1. Panjang tidak kurang daripada 8 digit; 2. Sekurang -kurangnya mengandungi huruf kecil, huruf besar, dan nombor; 3. Sekatan watak khas boleh ditambah; Dari segi aspek lanjutan, duplikasi berterusan aksara dan urutan tambahan/penurunan perlu dielakkan, yang memerlukan pengesanan fungsi PHP; Pada masa yang sama, senarai hitam harus diperkenalkan untuk menapis kata laluan lemah yang biasa seperti kata laluan dan 123456; Akhirnya, disyorkan untuk menggabungkan perpustakaan ZXCVBN untuk meningkatkan ketepatan penilaian.

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
