인터넷의 지속적인 발전과 대중화로 인해 점점 더 많은 웹사이트와 애플리케이션에서 제3자 로그인 및 인증 서비스를 제공하여 사용자가 신속하게 등록 및 로그인하고 사용자 데이터를 더욱 편리하게 얻을 수 있게 되었습니다. 일반적인 공개 인증 표준인 OAuth2는 타사 로그인 및 인증 시나리오에서 널리 사용됩니다.
이 기사에서는 PHP 및 OAuth2를 사용하여 타사 로그인 및 인증을 구현하는 방법을 소개합니다. GitHub를 예제 플랫폼으로 사용하여 OAuth2를 사용하여 사용자 정보를 얻고 이 정보를 로컬 데이터베이스에 저장하는 방법을 보여줍니다.
GitHub에서 OAuth 애플리케이션을 생성하고 이후 사용을 위해 생성된 클라이언트 ID와 클라이언트 비밀번호를 기록합니다.
PHP에서 OAuth2를 구현하려면 타사 OAuth2 클라이언트 라이브러리를 사용할 수 있습니다. 여기서는 phpleague/oauth2-client를 샘플 라이브러리로 사용합니다.
Composer를 사용하여 설치하세요. 아직 Composer가 설치되어 있지 않다면 먼저 설치하세요.
터미널에서 다음 명령을 실행하세요.
composer require league/oauth2-client
인증 링크 구축은 첫 번째 단계로, 인증 링크를 사용하면 사용자가 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);
이 코드는 다음 작업을 수행합니다.
사용자가 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();
이제 액세스 토큰을 얻었으므로 액세스 토큰을 사용하여 사용자 데이터를 가져올 수 있습니다. 사용자 정보 획득을 예로 들어보겠습니다.
$user = $provider->getResourceOwner($accessToken); echo '用户ID:' . $user->getId() . '<br>'; echo '用户名:' . $user->getNickname() . '<br>'; echo '头像URL:' . $user->getAvatarUrl() . '<br>'; echo '主页URL:' . $user->getProfileUrl() . '<br>';
사용자 데이터를 획득한 후 나중에 사용할 수 있도록 해당 데이터를 로컬 데이터베이스에 저장할 수 있습니다.
이 글에서는 PHP와 OAuth2를 사용하여 타사 로그인 및 인증을 구현하는 방법을 소개했습니다. 간단한 예를 통해 OAuth2 클라이언트 라이브러리를 사용하여 인증 링크를 구축하고, 액세스 토큰을 얻고, 사용자 데이터를 얻는 방법을 배웠습니다. 이 기사가 도움이 되기를 바랍니다.
위 내용은 PHP 및 OAuth2를 사용하여 타사 로그인 및 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!