Rumah > pembangunan bahagian belakang > tutorial php > Cara menggunakan OAuth untuk akses data dalam PHP

Cara menggunakan OAuth untuk akses data dalam PHP

王林
Lepaskan: 2023-07-29 13:46:01
asal
993 orang telah melayarinya

Cara menggunakan OAuth dalam PHP untuk akses data

OAuth ialah standard terbuka untuk kebenaran yang membolehkan pengguna memberikan kebenaran kepada aplikasi pihak ketiga untuk mengakses data mereka tanpa memberikan nama pengguna dan kata laluan mereka kepada aplikasi pihak ketiga . Sangat mudah untuk menggunakan OAuth untuk akses data dalam PHP Artikel ini akan memperkenalkan cara menggunakan OAuth untuk akses data dan memberikan contoh kod yang berkaitan.

  1. Pasang perpustakaan OAuth

Mula-mula, kita perlu memasang perpustakaan OAuth. Dalam PHP, anda boleh menggunakan komposer untuk memasangnya. Jalankan arahan berikut dalam terminal:

composer require league/oauth2-client
Salin selepas log masuk
  1. Dapatkan kebenaran OAuth

Sebelum menggunakan OAuth untuk akses data, kami perlu mendapatkan kebenaran OAuth yang sepadan. Biasanya, kami perlu meminta kebenaran pengguna dan mendapatkan token akses. Berikut ialah contoh penggunaan OAuth untuk kebenaran pengguna:

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();

header('Location: ' . $authUrl);
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan kelas GenericProvider yang disediakan oleh perpustakaan pelanggan liga/oauth2 untuk kebenaran OAuth. Perlu diingatkan bahawa anda perlu menggantikan clientId, clientSecret, redirectUri, urlAuthorize, urlAccessToken dan parameter lain dalam kod sampel dengan nilai anda sendiri.

  1. Mengendalikan panggilan balik

Selepas pengguna melengkapkan kebenaran, pelayan kebenaran akan mengubah hala pengguna ke URL panggil balik yang kami berikan, bersama-sama dengan maklumat seperti token akses. Kami perlu menulis pengendali untuk URL panggil balik untuk menyimpan token akses yang dikembalikan oleh pelayan kebenaran. Berikut ialah contoh pengendalian panggilan balik:

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

if (!isset($_GET['code'])) {
    exit('Error: No authorization code found');
}

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

    echo 'Access Token: ' . $accessToken->getToken();
} catch (IdentityProviderException $e) {
    exit('Error: ' . $e->getMessage());
}
Salin selepas log masuk

Dalam contoh di atas, kami mendapat token akses dengan mendapatkan parameter $_GET['kod'] dan menghantar kod kebenaran yang dikembalikan oleh pelayan kebenaran kepada kaedah getAccessToken pustaka OAuth .

  1. Gunakan token akses untuk akses data

Selepas mendapatkan token akses, kami boleh menggunakannya untuk akses data. Berikut ialah contoh menggunakan token akses untuk akses data:

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

$accessToken = new LeagueOAuth2ClientTokenAccessToken([
    'access_token' => 'yourAccessToken'
]);

$response = $provider->getAuthenticatedRequest(
    'GET',
    'https://example.com/api/data',
    $accessToken
);

$data = $provider->getParsedResponse($response);

var_dump($data);
Salin selepas log masuk

Dalam contoh di atas, kami membuat permintaan yang dibenarkan dengan mencipta objek AccessToken dan menghantar token akses kepada kaedah getAuthenticatedRequest. Kami kemudiannya boleh memanggil kaedah getParsedResponse untuk mendapatkan kandungan respons. Ambil perhatian bahawa anda perlu menggantikan yourAccessToken dalam kod contoh dengan token akses anda sendiri.

Ringkasan:

Artikel ini memperkenalkan cara menggunakan OAuth untuk akses data dalam PHP. Pertama, kita perlu memasang perpustakaan OAuth. Kemudian, kita perlu mendapatkan kebenaran OAuth dan mengendalikan panggilan balik. Akhir sekali, kami menggunakan token akses untuk akses data. Dengan menggunakan contoh kod di atas, kami boleh melaksanakan fungsi kebenaran OAuth dan akses data dengan mudah dalam aplikasi PHP.

Atas ialah kandungan terperinci Cara menggunakan OAuth untuk akses data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan