Rumah > Artikel > pembangunan bahagian belakang > Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2
Gunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2
OAuth2 ialah protokol standard terbuka yang digunakan untuk membenarkan aplikasi pihak ketiga mengakses sumber pengguna untuk pengesahan. Ia mudah, selamat dan fleksibel dan digunakan secara meluas dalam pelbagai aplikasi web dan aplikasi mudah alih.
Dalam PHP, kami boleh melaksanakan keizinan dan pengesahan OAuth2 dengan menggunakan perpustakaan pihak ketiga. Artikel ini akan menggabungkan kod sampel untuk memperkenalkan cara menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2.
Pertama, kita perlu menggunakan Komposer untuk memasang perpustakaan PHP OAuth2. Jalankan arahan berikut dalam baris arahan:
composer require league/oauth2-client
Selepas pemasangan selesai, kita boleh menggunakan coretan kod berikut untuk melaksanakan proses kebenaran OAuth2.
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取授权地址 $authorizationUrl = $provider->getAuthorizationUrl(); // 将授权地址重定向到用户 header('Location: ' . $authorizationUrl);
Dalam kod di atas, kami mula-mula mencipta objek GenericProvider
dan perlu menghantar maklumat konfigurasi yang berkaitan. Antaranya, clientId
dan clientSecret
ialah ID aplikasi dan kunci rahsia yang disediakan oleh pelayan kebenaran redirectUri
ialah alamat ubah hala selepas pengguna melengkapkan kebenaran ; urlAuthorize
ialah alamat kebenaran pelayan kebenaran urlAccessToken
ialah alamat perolehan token pelayan kebenaran ialah alamat antara muka; maklumat pengguna. GenericProvider
对象,需要传入相关的配置信息。其中,clientId
和clientSecret
是由授权服务器提供的应用程序标识和秘钥;redirectUri
是用户完成授权后重定向的地址;urlAuthorize
是授权服务器的授权地址;urlAccessToken
是授权服务器的令牌获取地址;urlResourceOwnerDetails
是获取用户信息的接口地址。
接下来,我们使用getAuthorizationUrl
方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri
地址。
我们还需要创建一个回调页面callback.php
来处理用户完成授权后的重定向。以下是callback.php
的代码示例:
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取令牌 $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // 使用令牌获取用户信息 $user = $provider->getResourceOwner($token); // 输出用户信息 echo 'User ID: ' . $user->getId() . '<br>'; echo 'User Name: ' . $user->getName() . '<br>';
在callback.php
中,我们通过getAccessToken
方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner
getAuthorizationUrl
untuk mendapatkan alamat kebenaran dan kemudian mengubah halanya kepada pengguna. Pengguna akan log masuk dan memberi kebenaran melalui alamat kebenaran, dan kemudian akan diubah hala semula ke alamat redirectUri
yang kami sediakan. Kami juga perlu membuat halaman panggil balik callback.php
untuk mengendalikan ubah hala selepas pengguna melengkapkan kebenaran. Berikut ialah contoh kod callback.php
: rrreee
Dalamcallback.php
, kami memperoleh token yang dikembalikan selepas kebenaran pengguna melalui getAccessToken
kaedah token, dan kemudian gunakan token ini untuk mendapatkan maklumat pengguna melalui kaedah getResourceOwner
. Di atas ialah contoh kod untuk menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2. Melalui kod ini, kami boleh melaksanakan log masuk kebenaran pengguna dan mendapatkan maklumat pengguna yang dibenarkan. Atas ialah kandungan terperinci Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!