cari
Rumahpembangunan bahagian belakangtutorial phpBagaimana untuk menggunakan OAuth2 dengan php?

Bagaimana untuk menggunakan OAuth2 dengan php?

Jun 01, 2023 am 08:31 AM
phpgunaoauth

OAuth2 ialah protokol standard terbuka yang digunakan secara meluas yang digunakan untuk membenarkan akses kepada sumber pengguna tanpa menghantar nama pengguna dan kata laluan terus kepada aplikasi pihak ketiga, seperti rangkaian sosial seperti Google, Facebook dan Twitter.

Dalam PHP, anda boleh menggunakan perpustakaan OAuth2 siap sedia untuk melaksanakan aliran OAuth2 dengan mudah atau anda boleh membina pustaka anda sendiri untuk melaksanakannya.

Dalam artikel ini, kami akan menumpukan pada menggunakan pustaka OAuth2 yang sudah siap, cara menggunakan protokol OAuth2 untuk mendapatkan kebenaran pengguna dan mengakses sumber mereka.

  1. Pasang perpustakaan OAuth2

Pertama, kita perlu memasang perpustakaan OAuth2 yang tersedia. Pada masa ini, terdapat beberapa perpustakaan OAuth2 berbeza yang tersedia untuk pembangunan PHP, termasuk php-oauth2-client, thephpleague/oauth2-client, dan bshaffer/oauth2-server-php, antara lain. Dalam artikel ini, kami akan menggunakan thephpleague/oauth2-client sebagai pustaka OAuth2 kami.

Untuk memasang perpustakaan ini, anda boleh menggunakan Komposer, jalankan sahaja arahan berikut dalam terminal:

composer require league/oauth2-client
  1. Buat objek klien OAuth2

Sebaik sahaja kami mempunyai pustaka OAuth2 dipasang, kini kita boleh mencipta objek klien OAuth2. Pelanggan ini akan berkomunikasi dengan pembekal perkhidmatan mengikut protokol OAuth2 dan mengekalkan keadaan sesi antara kami dan pembekal perkhidmatan.

Dalam contoh ini, kami akan menggunakan GitHub sebagai pembekal OAuth2. Untuk mencipta objek klien, gunakan kod berikut:

$clientId = 'your_client_id'; // Your GitHub Client ID
$clientSecret = 'your_client_secret'; // Your GitHub Client Secret
$redirectUri = 'http://example.com/oauth2callback'; // Your redirect URI

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => $clientId,
    'clientSecret'      => $clientSecret,
    'redirectUri'       => $redirectUri,
]);

Kod di atas akan mencipta objek klien OAuth2 bernama $provider, yang akan digunakan untuk mengakses penyedia OAuth2 pada GitHub. Antaranya, kami perlu menyediakan ID pelanggan, rahsia pelanggan dan URI panggilan balik yang diberikan kepada kami oleh GitHub.

  1. Dapatkan URL kebenaran

Dalam OAuth2, URL kebenaran digunakan untuk membimbing pengguna melalui proses kebenaran OAuth2. Kami perlu mengubah hala pengguna ke URL kebenaran supaya mereka boleh membenarkan aplikasi kami sebelum mengakses sumber GitHub yang diperlukan oleh aplikasi kami.

Untuk mendapatkan URL kebenaran, gunakan kod berikut:

$authorizationUrl = $provider->getAuthorizationUrl();

Kod di atas akan mengembalikan URL kebenaran yang kami perlukan untuk mengubah hala pengguna.

header('Location: ' . $authorizationUrl);
exit;
  1. Dapatkan Token Akses

Setelah pengguna berjaya membuat kebenaran OAuth2 pada GitHub, mereka akan diubah hala semula ke URL panggil balik yang disediakan oleh aplikasi kami. Pada ketika ini, kita perlu mendapatkan token akses untuk mengakses sumber GitHub yang memerlukan kebenaran.

Seterusnya, kita boleh menggunakan kod berikut untuk mendapatkan token akses:

$accessToken = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

Kod di atas akan menggunakan kod kebenaran untuk meminta token akses dan mengembalikan objek $accessToken. Objek $accessToken ini mengandungi token akses dan sifat berkaitannya, seperti masa tamat tempoh dan token muat semula, dsb.

  1. Gunakan token akses untuk mengakses sumber GitHub

Sekarang kami telah memperoleh token akses, kami boleh menggunakannya untuk mengakses sumber GitHub yang memerlukan kebenaran, seperti mendapatkan pengguna maklumat Atau baca senarai repositorinya.

Gunakan kod berikut untuk mendapatkan maklumat pengguna:

$user = $provider->getResourceOwner($accessToken);
echo 'Hello, ' . $user->getName();

Kod di atas akan menggunakan token akses untuk memanggil API pemilik sumber di GitHub dan mengembalikan objek $user.

Sila ambil perhatian bahawa objek $user dalam kod di atas akan mengembalikan nama pengguna dan sifat berkaitan yang lain, yang boleh kami gunakan untuk mendapatkan maklumat tentang pengguna dan sumber GitHub yang lain.

  1. Muat semula token akses

Token akses mungkin tamat tempoh atau menjadi tidak sah, kami perlu menyemak statusnya pada masa jalan dan muat semula token jika perlu.

Gunakan kod berikut untuk menyemak dan memuat semula token akses:

if ($accessToken->hasExpired()) {
    $newAccessToken = $provider->getAccessToken('refresh_token', [
        'refresh_token' => $accessToken->getRefreshToken()
    ]);
}

// Use $newAccessToken to access protected resources

Kod di atas akan menyemak sama ada token akses telah tamat tempoh dan menggunakan atribut refresh_token untuk meminta objek $accessToken baharu, yang mengandungi Token akses yang diperbaharui dan sifat berkaitan lain.

Pada ketika ini, kami telah mempelajari cara menggunakan perpustakaan klien phpleague/oauth2 untuk melaksanakan proses OAuth2. Kini kami boleh menggunakannya untuk mengakses pelbagai penyedia OAuth2 seperti Google, Facebook, Twitter dan GitHub, antara lain.

Ringkasan

Dalam artikel ini, kami mempelajari cara menggunakan perpustakaan OAuth2 untuk membina klien OAuth2 dan menggunakan klien untuk mendapatkan kebenaran dan mengakses sumber yang dilindungi. Kami juga mempelajari cara menyemak dan memuat semula token akses untuk memastikan kami sentiasa mempunyai akses kepada sumber yang kami perlukan.

Sila ambil perhatian bahawa protokol OAuth2 mempunyai proses kebenaran yang kompleks dan butiran pelaksanaan, jadi berhati-hati dan berhati-hati diperlukan semasa membangunkan klien OAuth2. Walau bagaimanapun, menggunakan perpustakaan OAuth2 siap sedia, kami boleh menjadikan proses ini agak mudah dan mudah.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan OAuth2 dengan php?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimanakah anda dapat mencegah serangan penetapan sesi?Bagaimanakah anda dapat mencegah serangan penetapan sesi?Apr 28, 2025 am 12:25 AM

Kaedah yang berkesan untuk mengelakkan serangan tetap sesi termasuk: 1. Meningkatkan semula ID Sesi selepas log pengguna masuk; 2. Gunakan algoritma penjanaan ID sesi yang selamat; 3. Melaksanakan mekanisme masa tamat sesi; 4. Menyulitkan data sesi menggunakan HTTPS. Langkah -langkah ini dapat memastikan bahawa aplikasi itu tidak dapat dihancurkan apabila menghadapi serangan tetap sesi.

Bagaimana anda melaksanakan pengesahan tanpa sesi?Bagaimana anda melaksanakan pengesahan tanpa sesi?Apr 28, 2025 am 12:24 AM

Melaksanakan pengesahan bebas sesi boleh dicapai dengan menggunakan JSONWEBTOKENS (JWT), sistem pengesahan berasaskan token di mana semua maklumat yang diperlukan disimpan dalam token tanpa penyimpanan sesi pelayan. 1) Gunakan JWT untuk menjana dan mengesahkan token, 2) memastikan bahawa HTTPS digunakan untuk mengelakkan token daripada dipintas, 3) menyimpan token dengan selamat di sisi klien, 4) mengesahkan token di sisi pelayan untuk mengelakkan gangguan, 5) melaksanakan mekanisme pembatalan token.

Apakah beberapa risiko keselamatan biasa yang berkaitan dengan sesi PHP?Apakah beberapa risiko keselamatan biasa yang berkaitan dengan sesi PHP?Apr 28, 2025 am 12:24 AM

Risiko keselamatan sesi PHP terutamanya termasuk rampasan sesi, penetapan sesi, ramalan sesi dan keracunan sesi. 1. Sesi rampasan boleh dicegah dengan menggunakan HTTPS dan melindungi kuki. 2. Penetapan sesi boleh dielakkan dengan menanam semula ID sesi sebelum log pengguna masuk. 4. Keracunan sesi boleh dicegah dengan mengesahkan dan menapis data sesi.

Bagaimana anda memusnahkan sesi PHP?Bagaimana anda memusnahkan sesi PHP?Apr 28, 2025 am 12:16 AM

Untuk memusnahkan sesi PHP, anda perlu memulakan sesi terlebih dahulu, kemudian membersihkan data dan memusnahkan fail sesi. 1. Gunakan session_start () untuk memulakan sesi. 2. Gunakan session_unset () untuk membersihkan data sesi. 3. Akhirnya, gunakan session_destroy () untuk memusnahkan fail sesi untuk memastikan keselamatan data dan pelepasan sumber.

Bagaimanakah anda boleh menukar sesi simpan sesi lalai di php?Bagaimanakah anda boleh menukar sesi simpan sesi lalai di php?Apr 28, 2025 am 12:12 AM

Bagaimana cara menukar laluan penjimatan sesi lalai PHP? Ia boleh dicapai melalui langkah -langkah berikut: gunakan session_save_path ('/var/www/sesi'); session_start (); Dalam skrip PHP untuk menetapkan laluan penjimatan sesi. Tetapkan session.save_path = "/var/www/sesi" dalam fail php.ini untuk menukar laluan penjimatan sesi di seluruh dunia. Gunakan memcached atau redis untuk menyimpan data sesi, seperti ini_set ('session.save_handler', 'memcached'); ini_set (

Bagaimana anda mengubah suai data yang disimpan dalam sesi PHP?Bagaimana anda mengubah suai data yang disimpan dalam sesi PHP?Apr 27, 2025 am 12:23 AM

Tomodififydatainaphpsession, startTheSessionWithSsion_start (), thenuse $ _SessionToset, Modify, Orremovariables.1) startTheSession.2) setOrmodifySessionVariabelinging $ _Session.3) ReveVariablesWithunset ()

Berikan contoh menyimpan array dalam sesi PHP.Berikan contoh menyimpan array dalam sesi PHP.Apr 27, 2025 am 12:20 AM

Array boleh disimpan dalam sesi PHP. 1. Mulakan sesi dan gunakan session_start (). 2. Buat array dan simpan dalam $ _Session. 3. Dapatkan array melalui $ _Session. 4. Mengoptimumkan data sesi untuk meningkatkan prestasi.

Bagaimanakah pengumpulan sampah berfungsi untuk sesi PHP?Bagaimanakah pengumpulan sampah berfungsi untuk sesi PHP?Apr 27, 2025 am 12:19 AM

Pengumpulan sampah sesi PHP dicetuskan melalui mekanisme kebarangkalian untuk membersihkan data sesi yang telah tamat tempoh. 1) Tetapkan kebarangkalian pencetus dan kitaran hayat sesi dalam fail konfigurasi; 2) Anda boleh menggunakan tugas cron untuk mengoptimumkan aplikasi beban tinggi; 3) Anda perlu mengimbangi kekerapan dan prestasi pengumpulan sampah untuk mengelakkan kehilangan data.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini