Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Laksanakan log masuk dan kebenaran pihak ketiga menggunakan PHP dan OAuth2

Laksanakan log masuk dan kebenaran pihak ketiga menggunakan PHP dan OAuth2

PHPz
PHPzasal
2023-06-25 18:33:22984semak imbas

Dengan pembangunan berterusan dan mempopularkan Internet, semakin banyak laman web dan aplikasi akan menyediakan perkhidmatan log masuk dan kebenaran pihak ketiga untuk memudahkan pengguna mendaftar dan log masuk dengan cepat, dan juga untuk mendapatkan data pengguna dengan lebih mudah. Sebagai standard kebenaran terbuka biasa, OAuth2 digunakan secara meluas dalam log masuk pihak ketiga dan senario kebenaran.

Artikel ini akan memperkenalkan cara menggunakan PHP dan OAuth2 untuk melaksanakan log masuk dan kebenaran pihak ketiga. Kami akan menggunakan GitHub sebagai platform contoh untuk menunjukkan cara menggunakan OAuth2 untuk mendapatkan maklumat pengguna dan menyimpan maklumat ini dalam pangkalan data setempat.

1 Mula-mula, anda perlu mencipta aplikasi OAuth pada GitHub

Buat aplikasi OAuth pada GitHub dan merekodkan ID pelanggan dan rahsia pelanggan yang dijana untuk kegunaan seterusnya.

2. Pasang pustaka klien OAuth2

Untuk melaksanakan OAuth2 dalam PHP, anda boleh menggunakan pustaka klien OAuth2 pihak ketiga. Di sini kami menggunakan thephpleague/oauth2-client sebagai perpustakaan sampel.

Gunakan Komposer untuk memasang, jika anda belum memasang Komposer, sila pasang dahulu. .

Berikut ialah contoh kod untuk membina pautan kebenaran:

composer require league/oauth2-client

Kod ini melakukan perkara berikut:

Mencipta contoh penyedia GitHub, memberikan maklumat aplikasi OAuth yang diperlukan

Menggunakan pautan getAuthorizationUrl dan kaedah ubah hala untuk mendapatkan AuthorizeUrl pengguna ke pautan ini

    4. Kendalikan URL panggil balik dan dapatkan token akses
  1. Setelah pengguna membenarkan apl anda di GitHub, mereka akan diubah hala kembali ke apl anda. Dalam URL ubah hala ini anda boleh mendapatkan token akses.
  2. Berikut ialah contoh kod untuk mendapatkan token akses:
<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

$authUrl = $provider->getAuthorizationUrl([
    'scope' => ['user'],
]);

header('Location: ' . $authUrl);

5. Dapatkan data pengguna dan simpan

Sekarang kami telah memperoleh token akses, kami boleh menggunakan token akses untuk mendapatkan data pengguna. Ambil mendapatkan maklumat pengguna sebagai contoh:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

if (!isset($_GET['code'])) {
    die('授权失败:没有授权码!');
} else {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code'],
    ]);
}

echo '访问令牌:' . $accessToken->getToken();

Selepas mendapatkan data pengguna, kami boleh menyimpan data dalam pangkalan data tempatan untuk kegunaan kemudian.

6. Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan PHP dan OAuth2 untuk melaksanakan log masuk dan kebenaran pihak ketiga. Melalui contoh mudah, kami belajar cara menggunakan perpustakaan klien OAuth2 untuk membina pautan kebenaran, mendapatkan token akses dan mendapatkan data pengguna. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Laksanakan log masuk dan kebenaran pihak ketiga menggunakan PHP dan OAuth2. 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