>백엔드 개발 >PHP 튜토리얼 >PHP 및 OAuth2를 사용하여 타사 로그인 및 인증 구현

PHP 및 OAuth2를 사용하여 타사 로그인 및 인증 구현

PHPz
PHPz원래의
2023-06-25 18:33:221048검색

인터넷의 지속적인 발전과 대중화로 인해 점점 더 많은 웹사이트와 애플리케이션에서 제3자 로그인 및 인증 서비스를 제공하여 사용자가 신속하게 등록 및 로그인하고 사용자 데이터를 더욱 편리하게 얻을 수 있게 되었습니다. 일반적인 공개 인증 표준인 OAuth2는 타사 로그인 및 인증 시나리오에서 널리 사용됩니다.

이 기사에서는 PHP 및 OAuth2를 사용하여 타사 로그인 및 인증을 구현하는 방법을 소개합니다. GitHub를 예제 플랫폼으로 사용하여 OAuth2를 사용하여 사용자 정보를 얻고 이 정보를 로컬 데이터베이스에 저장하는 방법을 보여줍니다.

1 먼저 GitHub에서 OAuth 애플리케이션을 생성해야 합니다

GitHub에서 OAuth 애플리케이션을 생성하고 이후 사용을 위해 생성된 클라이언트 ID와 클라이언트 비밀번호를 기록합니다.

2. OAuth2 클라이언트 라이브러리 설치

PHP에서 OAuth2를 구현하려면 타사 OAuth2 클라이언트 라이브러리를 사용할 수 있습니다. 여기서는 phpleague/oauth2-client를 샘플 라이브러리로 사용합니다.

Composer를 사용하여 설치하세요. 아직 Composer가 설치되어 있지 않다면 먼저 설치하세요.

터미널에서 다음 명령을 실행하세요.

composer require league/oauth2-client

3. 인증 링크 구축

인증 링크 구축은 첫 번째 단계로, 인증 링크를 사용하면 사용자가 GitHub로 리디렉션되어 인증을 요청할 수 있습니다.

다음은 인증 링크를 구축하는 샘플 코드입니다.

<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

$authUrl = $provider->getAuthorizationUrl([
    'scope' => ['user'],
]);

header('Location: ' . $authUrl);

이 코드는 다음 작업을 수행합니다.

  1. GitHub 공급자 인스턴스를 생성하여 필수 OAuth 애플리케이션 정보를 제공합니다.
  2. getAuthorizationUrl 메소드를 사용하여 인증 링크 가져오기 및 리디렉션 사용자를 이 링크로

4. 콜백 URL을 처리하고 액세스 토큰을 얻습니다.

사용자가 GitHub에서 앱을 승인하면 앱으로 다시 리디렉션됩니다. 이 리디렉션 URL에서 액세스 토큰을 얻을 수 있습니다.

다음은 액세스 토큰을 가져오는 샘플 코드입니다.

<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

if (!isset($_GET['code'])) {
    die('授权失败:没有授权码!');
} else {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code'],
    ]);
}

echo '访问令牌:' . $accessToken->getToken();

5. 사용자 데이터 가져오기 및 저장

이제 액세스 토큰을 얻었으므로 액세스 토큰을 사용하여 사용자 데이터를 가져올 수 있습니다. 사용자 정보 획득을 예로 들어보겠습니다.

$user = $provider->getResourceOwner($accessToken);

echo '用户ID:' . $user->getId() . '<br>';
echo '用户名:' . $user->getNickname() . '<br>';
echo '头像URL:' . $user->getAvatarUrl() . '<br>';
echo '主页URL:' . $user->getProfileUrl() . '<br>';

사용자 데이터를 획득한 후 나중에 사용할 수 있도록 해당 데이터를 로컬 데이터베이스에 저장할 수 있습니다.

6. 요약

이 글에서는 PHP와 OAuth2를 사용하여 타사 로그인 및 인증을 구현하는 방법을 소개했습니다. 간단한 예를 통해 OAuth2 클라이언트 라이브러리를 사용하여 인증 링크를 구축하고, 액세스 토큰을 얻고, 사용자 데이터를 얻는 방법을 배웠습니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 PHP 및 OAuth2를 사용하여 타사 로그인 및 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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