찾다
PHP 프레임워크Swoole타사 로그인에 Hyperf 프레임워크를 사용하는 방법

타사 로그인에 Hyperf 프레임워크를 사용하는 방법

Oct 25, 2023 am 09:16 AM
사용제3자 로그인하이퍼프 프레임워크

타사 로그인에 Hyperf 프레임워크를 사용하는 방법

제3자 로그인을 위해 Hyperf 프레임워크를 사용하는 방법

소개:
인터넷이 발전하면서 제3자 로그인은 많은 웹사이트와 애플리케이션의 표준 기능이 되었습니다. 제3자 로그인을 통해 사용자는 제3자 플랫폼의 기존 계정 정보를 사용하여 다른 웹사이트나 애플리케이션에 로그인할 수 있으므로 번거로운 등록 절차를 피하고 사용자 경험을 크게 향상시킬 수 있습니다. 이 문서에서는 특정 코드 예제와 함께 Hyperf 프레임워크를 사용하여 타사 로그인 기능을 구현하는 방법을 소개합니다.

1. 준비
서드 파티 로그인을 구현하기 전에 몇 가지 필요한 작업을 준비해야 합니다.

  1. 서드 파티 로그인이 필요한 웹사이트나 애플리케이션에 등록하고 QQ와 같은 해당 개발자 계정을 신청하세요. 인터넷, WeChat 오픈 플랫폼 등 해당 AppID, AppSecret 등 필요한 정보를 얻습니다.
  2. Hyperf 프레임워크를 설치하고 새 프로젝트를 만듭니다.

2. 종속성 패키지 설치
프로젝트 루트 디렉터리에서 다음 명령을 실행하여 Hyperf 커뮤니티에서 제공하는 타사 로그인 확장 패키지를 설치합니다.

composer require hyperf/socialite

3. 구성 정보 추가
Hyperf 프로젝트 루트 디렉터리의 config/autoload/ 디렉터리에 socialite.php 구성 파일을 추가하고 다음 내용을 추가합니다. config/autoload/ 目录下添加 socialite.php 配置文件,并添加以下内容:

<?php

return [
    'default' => [
        'wechat' => [
            'client_id' => env('WECHAT_CLIENT_ID', ''),
            'client_secret' => env('WECHAT_CLIENT_SECRET', ''),
            'redirect' => env('WECHAT_REDIRECT', ''),
        ],
        'qq' => [
            'client_id' => env('QQ_CLIENT_ID', ''),
            'client_secret' => env('QQ_CLIENT_SECRET', ''),
            'redirect' => env('QQ_REDIRECT', ''),
        ],
        // 更多第三方平台的配置信息...
    ],
];

上述配置文件中的 WECHAT_CLIENT_IDWECHAT_CLIENT_SECRETWECHAT_REDIRECTQQ_CLIENT_IDQQ_CLIENT_SECRETQQ_REDIRECT 等字段需要替换为开发者在对应平台上申请的信息。

四、创建控制器
在Hyperf项目中创建一个控制器,例如 LoginController,并添加以下方法:

<?php

declare(strict_types=1);

namespace AppController;

use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationRequestMapping;
use PsrHttpMessageResponseInterface;

/**
 * @Controller
 */
class LoginController
{
    /**
     * @RequestMapping(path="/login/{platform}", methods="GET")
     */
    public function redirectToThirdParty(string $platform): ResponseInterface
    {
        return context()
            ->getContainer()
            ->get(HyperfSocialiteSocialiteManager::class)
            ->driver($platform)
            ->redirect();
    }

    /**
     * @RequestMapping(path="/login/{platform}/callback", methods="GET")
     */
    public function handleThirdPartyCallback(string $platform): ResponseInterface
    {
        $user = context()
            ->getContainer()
            ->get(HyperfSocialiteSocialiteManager::class)
            ->driver($platform)
            ->user();
        
        // 在此处处理用户登录逻辑,例如创建用户、更新用户信息等

        return $this->generateResponse();
    }

    private function generateResponse(): ResponseInterface
    {
        // 生成登录成功后的响应

        return $response;
    }
}

五、使用第三方登录
在页面中添加第三方登录的入口,例如:

<a href="/login/wechat">使用微信登录</a>
<a href="/login/qq">使用QQ登录</a>

当用户点击对应的链接后,会跳转到第三方平台的登录授权页面。

六、处理回调数据
当用户在第三方平台上完成登录授权后,会跳转回我们的应用程序,并调用回调方法 handleThirdPartyCallback。在该方法中,我们可以通过 user() 方法获取到用户在第三方平台上的基本信息,例如头像、昵称等。在此处,我们可以根据第三方平台返回的信息,判断用户是否已经在我们的应用程序中注册,如果没有,则可以在此处完成用户的自动注册。

七、完善登录逻辑
在登陆成功后,我们可以根据业务需求,生成用户的登录状态并返回一个响应给用户,例如生成 JWT Token,设置 Cookie 等。

八、总结
通过使用Hyperf框架和社区提供的 hyperf/socialiterrreee

WECHAT_CLIENT_ID, WECHAT_CLIENT_SECRET, WECHAT_REDIRECT, QQ_CLIENT_ID, QQ_CLIENT_SECRET 위 구성 파일의 QQ_REDIRECT 등의 필드는 해당 플랫폼에서 개발자가 적용한 정보로 대체되어야 합니다. 🎜🎜4. 컨트롤러를 생성합니다🎜 LoginController와 같은 컨트롤러를 생성하고 다음 메소드를 추가합니다: 🎜rrreee🎜5. 타사 로그인을 추가합니다. 페이지 입구(예: 🎜rrreee🎜) 사용자가 해당 링크를 클릭하면 타사 플랫폼의 로그인 인증 페이지로 이동합니다. 🎜🎜6. 콜백 데이터 처리🎜 사용자가 타사 플랫폼에서 로그인 인증을 완료하면 애플리케이션으로 돌아가 콜백 메서드 handleThirdPartyCallback을 호출합니다. 이 방법에서는 user() 메소드를 통해 타사 플랫폼에서 아바타, 닉네임 등 사용자의 기본 정보를 얻을 수 있습니다. 여기서는 타사 플랫폼에서 반환된 정보를 기반으로 사용자가 애플리케이션에 등록했는지 여부를 확인할 수 있습니다. 그렇지 않은 경우 여기에서 사용자의 자동 등록을 완료할 수 있습니다. 🎜🎜7. 로그인 로직 개선🎜 성공적으로 로그인한 후 JWT 토큰 생성, 쿠키 설정 등 비즈니스 요구에 따라 사용자의 로그인 상태를 생성하고 사용자에게 응답을 반환할 수 있습니다. 🎜🎜8. 요약🎜Hyperf 프레임워크와 커뮤니티에서 제공하는 hyperf/socialite 확장 패키지를 사용하여 타사 로그인 기능을 빠르게 구현할 수 있습니다. 이 기사에서는 종속성 패키지 도입, 구성 정보 추가, 컨트롤러 생성 및 기타 단계를 통해 WeChat 및 QQ를 통해 사용자 로그인 기능을 구현합니다. 물론 실제 프로젝트에서는 필요에 따라 Weibo, GitHub 등과 같은 타사 로그인 방법을 더 추가할 수도 있습니다. 이 기사가 Hyperf에서 타사 로그인 기능을 구현하는 데 대한 참조를 제공할 수 있기를 바랍니다. 🎜

위 내용은 타사 로그인에 Hyperf 프레임워크를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구