Rumah >pembangunan bahagian belakang >tutorial php >OAuth dalam PHP: Mengintegrasikan fungsi log masuk pihak ketiga

OAuth dalam PHP: Mengintegrasikan fungsi log masuk pihak ketiga

WBOY
WBOYasal
2023-07-28 23:27:33776semak imbas

OAuth dalam PHP: Integrasikan fungsi log masuk pihak ketiga

Dengan perkembangan pesat media sosial, semakin banyak tapak web dan aplikasi menyediakan fungsi log masuk pihak ketiga, seperti log masuk menggunakan akaun Facebook, Google atau WeChat pengguna. Kaedah ini mudah untuk pengguna dan juga meningkatkan kadar penukaran pendaftaran dan log masuk pengguna. Dalam PHP, kita boleh melaksanakan fungsi ini melalui protokol OAuth. Dalam artikel ini, kami akan meneroka cara memanfaatkan OAuth dalam PHP untuk menyepadukan fungsi log masuk pihak ketiga.

OAuth ialah protokol kebenaran yang membenarkan pengguna membenarkan aplikasi pihak ketiga mengakses data mereka tanpa memberikan kata laluan mereka. Dalam log masuk pihak ketiga, OAuth menyediakan cara yang selamat, membolehkan kami menggunakan API platform pihak ketiga untuk mendapatkan maklumat asas dan kebenaran pengguna.

Pertama, kami perlu mendaftarkan akaun pembangun untuk mendapatkan bukti kelayakan keizinan OAuth. Proses ini biasanya melibatkan mencipta aplikasi dan mendapatkan kelayakan seperti ID pelanggan dan rahsia pelanggan. Mengambil Facebook sebagai contoh, kita perlu pergi ke Platform Pembangun Facebook untuk membuat aplikasi.

Sebaik sahaja kami mempunyai bukti kelayakan, kami boleh menulis kod PHP untuk melaksanakan fungsi log masuk pihak ketiga. Kami akan menggunakan perpustakaan PHP yang popular seperti League/OAuth2-Client untuk memudahkan keseluruhan proses.

Pertama, kita perlu memasang perpustakaan ini, yang boleh dipasang melalui Komposer. Jalankan arahan berikut dalam terminal:

composer require league/oauth2-client

Seterusnya, kita boleh menulis fail yang dipanggil oauth_callback.php yang akan mengendalikan logik panggil balik kebenaran. Berikut ialah contoh asas:

<?php
require 'vendor/autoload.php';
 
$provider = new LeagueOAuth2ClientProviderGenericProvider([
    'clientId'                => 'YOUR_CLIENT_ID',
    'clientSecret'            => 'YOUR_CLIENT_SECRET',
    'redirectUri'             => 'http://your-domain.com/oauth_callback.php',
    'urlAuthorize'            => 'https://oauth.provider.com/authorize',
    'urlAccessToken'          => 'https://oauth.provider.com/access_token',
    'urlResourceOwnerDetails' => 'https://oauth.provider.com/resource_owner'
]);
 
if (!isset($_GET['code'])) {
    $authorizationUrl = $provider->getAuthorizationUrl();
    $_SESSION['oauth2state'] = $provider->getState();
    header('Location: ' . $authorizationUrl);
    exit;
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
    unset($_SESSION['oauth2state']);
    exit('Invalid state');
} else {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);
 
    $resourceOwner = $provider->getResourceOwner($accessToken);
    $user = $resourceOwner->toArray();
 
    // 获取第三方登录用户的基本信息
    $email = $user['email'];
    $name = $user['name'];
 
    // 进行自己的业务逻辑
}

Dalam contoh ini, kami menggunakan GenericProvider sebagai pembekal OAuth. Kami perlu menggantikan YOUR_CLIENT_ID dan YOUR_CLIENT_SECRET dengan bukti kelayakan yang kami peroleh pada platform pembangun. redirectUri ialah URL panggil balik selepas kebenaran pengguna, yang perlu konsisten dengan URL panggil balik yang kami tetapkan dalam aplikasi.

Di halaman hadapan, kami boleh menambah butang atau pautan yang menghala ke alamat berikut:

<a href="oauth_callback.php">使用第三方登录</a>

Apabila pengguna mengklik pautan ini, mereka akan dialihkan ke halaman pengesahan platform pihak ketiga, meminta mereka untuk membenarkan permohonan kami untuk mengakses maklumat akaun mereka. Setelah mereka berjaya memberi kuasa, mereka akan diubah hala kembali ke halaman oauth_callback.php dengan parameter kod.

Dengan memanggil kaedah getAccessToken, kami boleh mendapatkan token akses. Kemudian, kita boleh menggunakan kaedah getResourceOwner untuk mendapatkan maklumat asas pengguna, seperti e-mel dan nama.

Akhir sekali, kami boleh memproses maklumat ini mengikut logik perniagaan kami sendiri, seperti membuat akaun pengguna atau log masuk ke akaun sedia ada.

Ringkasnya, dengan menggunakan protokol OAuth dalam PHP, kami boleh menyepadukan fungsi log masuk pihak ketiga dengan mudah. Saya harap artikel ini telah membantu anda untuk menambah lebih banyak pilihan log masuk pada aplikasi anda.

Atas ialah kandungan terperinci OAuth dalam PHP: Mengintegrasikan fungsi log masuk pihak ketiga. 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