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

Cara menggunakan OAuth untuk akses data dalam PHP

王林
王林asal
2023-07-29 13:41:00957semak imbas

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
  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);

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());
}

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);

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!

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