>백엔드 개발 >PHP 튜토리얼 >기사에서는 php7에 oauth2 확장을 설치하는 방법을 설명합니다.

기사에서는 php7에 oauth2 확장을 설치하는 방법을 설명합니다.

PHPz
PHPz원래의
2023-03-21 10:50:421994검색

PHP7은 웹 개발 분야에서 항상 인기 있는 선택이었던 효율적인 프로그래밍 언어입니다. OAuth2 프로토콜은 웹 애플리케이션의 보안과 사용자의 개인 정보를 보호하는 데 사용되는 인증 및 권한 부여를 위한 개방형 표준입니다. 이제 웹 개발에서 이 프로토콜을 사용할 수 있도록 PHP7에 OAuth2 확장을 설치하는 방법을 살펴보겠습니다.

  1. OAuth2 확장 설치

PHP7에 OAuth2 확장을 설치하려면 pecl 명령을 사용해야 합니다. 터미널에서 다음 명령을 실행하세요.

pecl install oauth-2.0.4

pecl이 시스템에 설치되어 있지 않으면 다음 명령을 사용하여 설치할 수 있습니다.

sudo apt-get install php-pear
  1. PHP.ini 파일 구성

설치 후 필요한 작업 PHP.ini 파일을 구성하려면 OAuth2 확장을 파일에 추가하세요. php.ini 파일 경로를 찾으려면 터미널에서 다음 명령을 실행하세요.

php --ini

찾은 php.ini 파일을 열고 끝에 다음 코드를 추가하세요.

extension=oauth.so

파일을 저장하고 PHP-FPM 서비스를 다시 시작하세요.

sudo systemctl restart php7-fpm

이제 OAuth2 확장이 성공적으로 설치 및 구성되었습니다. 다음으로 OAuth2 인증 프로토콜을 사용하여 웹 애플리케이션을 보호하는 방법을 알아보겠습니다.

  1. OAuth2 프로토콜 사용

OAuth2는 다양한 승인 및 인증 프로세스가 포함된 복잡한 프로토콜입니다. 여기서는 OAuth2 확장을 사용하는 방법을 보여주는 프로세스 중 하나만 소개합니다.

먼저 애플리케이션을 등록하고 클라이언트 ID와 클라이언트 비밀번호를 가져와야 합니다. 그런 다음 PHP 코드를 사용하여 OAuth2 확장에서 제공하는 인증 흐름을 호출할 수 있습니다.

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

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

header('Location: ' . $authorizationUrl);

위 예에서는 인증 URL을 생성하고 사용자를 해당 URL로 리디렉션합니다. 해당 URL에서 사용자는 특정 사용자 데이터에 액세스하려면 로그인하고 애플리케이션에 권한을 부여해야 합니다. 사용자가 애플리케이션을 승인하면 다음 코드를 사용하여 액세스 토큰으로 교환할 수 있는 인증 코드를 받게 됩니다.

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

if (!isset($_GET['code'])) {

    $options = [
        'state' => 'OPTIONAL_CUSTOM_CONFIG_VALUE',
        'scope' => ['scope1', 'scope2'],
    ];

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

    header('Location: ' . $authorizationUrl);
    exit;

} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    unset($_SESSION['oauth2state']);
    exit('Invalid state');

} else {

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

    echo $token->getToken();
}

위 코드는 사용자 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 반환합니다. 사용자 데이터에 액세스하려면 OAuth2 확장에서 제공하는 API에 액세스 토큰을 전달하기만 하면 됩니다.

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

$accessToken = 'YOUR_ACCESS_TOKEN';

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

$data = json_decode((string) $provider->getResponse($response)->getBody(), true);

print_r($data);

위의 예에서는 액세스 토큰을 가져오고 API를 호출하여 사용자 데이터에 액세스합니다.

  1. 요약

이 기사에서는 PHP7에 OAuth2 확장을 설치하고 OAuth2 인증 프로토콜을 사용하여 웹 애플리케이션을 보호하는 방법을 배웠습니다. OAuth2 프로토콜은 웹 개발 중에 사용자 개인정보와 데이터 보안을 보호하는 데 도움이 되는 중요한 보안 프로토콜입니다. 다음 웹 개발 프로젝트에서는 OAuth2 프로토콜을 사용하여 사용자 데이터를 안전하게 유지하는 것을 잊지 마세요.

위 내용은 기사에서는 php7에 oauth2 확장을 설치하는 방법을 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.