ホームページ  >  記事  >  PHPフレームワーク  >  サードパーティのログインに Hyperf フレームワークを使用する方法

サードパーティのログインに Hyperf フレームワークを使用する方法

PHPz
PHPzオリジナル
2023-10-25 09:16:471060ブラウズ

サードパーティのログインに Hyperf フレームワークを使用する方法

サードパーティ ログインに Hyperf フレームワークを使用する方法

はじめに:
インターネットの発展に伴い、サードパーティ ログインが標準になりました。豊富なWebサイトやアプリの機能を搭載。サードパーティのログインを通じて、ユーザーはサードパーティのプラットフォーム上の既存のアカウント情報を使用して他の Web サイトやアプリケーションにログインできるため、面倒な登録プロセスが回避され、ユーザー エクスペリエンスが大幅に向上します。この記事では、Hyperf フレームワークを使用してサードパーティのログイン機能を実装する方法を、具体的なコード例とともに紹介します。

1. 準備作業
サードパーティ ログインの実装を開始する前に、次の必要な作業を準備する必要があります:

  1. サードパーティ ログインが必要な Web サイトまたはアプリケーションについてQQ Internet、WeChat Open Platform など、対応する開発者アカウントを登録して申請します。対応するAppID、AppSecretなど必要な情報を取得します。
  2. Hyperf フレームワークをインストールし、新しいプロジェクトを作成します。

2. 依存関係パッケージのインストール
プロジェクト ルート ディレクトリで次のコマンドを実行して、Hyperf コミュニティが提供するサードパーティのログイン拡張パッケージをインストールします。

composer require hyperf/socialite

3. 構成情報の追加
socialite.php 構成ファイルを Hyperf プロジェクトのルート ディレクトリの config/autoload/ ディレクトリに追加し、次のコンテンツ:

<?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_SECRET#上記の設定ファイル ##、QQ_REDIRECT などのフィールドは、対応するプラットフォームで開発者が適用した情報に置き換える必要があります。

4. コントローラーの作成

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

5. 3 番目のメソッドを使用します。 -party login

ページにサードパーティのログイン入り口を追加します。例:

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

ユーザーが対応するリンクをクリックすると、サードパーティ プラットフォームのログイン認証ページにジャンプします。

6. コールバック データの処理

ユーザーがサードパーティ プラットフォームでログイン認証を完了すると、アプリケーションに戻り、コールバック メソッド
handleThirdPartyCallback を呼び出します。このメソッドでは、user() メソッドを通じてサードパーティ プラットフォーム上のユーザーの基本情報 (アバター、ニックネームなど) を取得できます。ここでは、サードパーティのプラットフォームから返された情報に基づいて、ユーザーがアプリケーションに登録したかどうかを判断できます。登録していない場合は、ここでユーザーの自動登録を完了できます。

7. ログイン ロジックの改善

ログインに成功した後、JWT トークンの生成や Cookie の設定など、ビジネス ニーズに応じてユーザーのログイン ステータスを生成し、ユーザーに応答を返すことができます。

8. 概要

Hyperf フレームワークとコミュニティが提供する
hyperf/socialite 拡張パッケージを使用することで、サードパーティのログイン機能を迅速に実装できます。この記事では、依存関係パッケージの導入、構成情報の追加、コントローラーの作成などの手順により、WeChat および QQ を介したユーザー ログイン機能を実装します。もちろん、実際のプロジェクトでは、ニーズに応じて Weibo や GitHub などのサードパーティのログイン方法を追加することもできます。この記事が、Hyperf でサードパーティのログイン機能を実装する際の参考になれば幸いです。

以上がサードパーティのログインに Hyperf フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。