Rumah pembangunan bahagian belakang tutorial php Bagaimana untuk menggunakan OAuth2 dengan php?

Bagaimana untuk menggunakan OAuth2 dengan php?

Jun 01, 2023 am 08:31 AM
php guna oauth

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
Salin selepas log masuk
  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,
]);
Salin selepas log masuk

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();
Salin selepas log masuk

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

header('Location: ' . $authorizationUrl);
exit;
Salin selepas log masuk
  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']
]);
Salin selepas log masuk

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();
Salin selepas log masuk

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
Salin selepas log masuk

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 Laman Web ini
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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Pembalakan CakePHP Pembalakan CakePHP Sep 10, 2024 pm 05:26 PM

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

See all articles