Maison  >  Article  >  cadre php  >  Comment utiliser le framework Hyperf pour la connexion tierce

Comment utiliser le framework Hyperf pour la connexion tierce

PHPz
PHPzoriginal
2023-10-25 09:16:471124parcourir

Comment utiliser le framework Hyperf pour la connexion tierce

Comment utiliser le framework Hyperf pour la connexion tierce

Introduction :
Avec le développement d'Internet, la connexion tierce est devenue une fonctionnalité standard de nombreux sites Web et applications. Grâce à la connexion tierce, les utilisateurs peuvent utiliser les informations de leur compte existant sur la plate-forme tierce pour se connecter à d'autres sites Web ou applications, évitant ainsi le processus d'inscription fastidieux et améliorant considérablement l'expérience utilisateur. Cet article explique comment utiliser le framework Hyperf pour implémenter une fonctionnalité de connexion tierce, avec des exemples de code spécifiques.

1. Préparation
Avant de commencer à mettre en œuvre la connexion tierce, nous devons préparer certains travaux nécessaires :

  1. Inscrivez-vous sur le site Web ou l'application qui nécessite une connexion tierce et demandez le compte de développeur correspondant, tel que QQ. Internet, plateforme ouverte WeChat, etc. Obtenez les informations nécessaires telles que l'AppID correspondant, AppSecret.
  2. Installez le framework Hyperf et créez un nouveau projet.

2. Installer les packages de dépendances
Exécutez la commande suivante dans le répertoire racine du projet pour installer le package d'extension de connexion tiers fourni par la communauté Hyperf.

composer require hyperf/socialite

3. Ajoutez des informations de configuration
Ajoutez le fichier de configuration socialite.php dans le répertoire config/autoload/ du répertoire racine du projet Hyperf, et ajoutez le contenu suivant : 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, dans le fichier de configuration ci-dessus. Les champs tels que QQ_REDIRECT doivent être remplacés par les informations appliquées par le développeur sur la plateforme correspondante. 🎜🎜4. Créez un contrôleur🎜Créez un contrôleur dans le projet Hyperf, tel que LoginController, et ajoutez la méthode suivante : 🎜rrreee🎜5.Utilisez une connexion tierce🎜Ajoutez une connexion tierce à. la page Entrée, par exemple : 🎜rrreee🎜Lorsque l'utilisateur clique sur le lien correspondant, il accédera à la page d'autorisation de connexion de la plateforme tierce. 🎜🎜6. Traitement des données de rappel🎜Lorsque l'utilisateur complète l'autorisation de connexion sur la plate-forme tierce, il reviendra à notre application et appellera la méthode de rappel handleThirdPartyCallback. Dans cette méthode, nous pouvons obtenir les informations de base de l'utilisateur sur la plateforme tierce via la méthode user(), telles que l'avatar, le pseudo, etc. Ici, nous pouvons déterminer si l'utilisateur s'est inscrit dans notre application sur la base des informations renvoyées par la plateforme tierce. Dans le cas contraire, l'inscription automatique de l'utilisateur peut être complétée ici. 🎜🎜7. Améliorer la logique de connexion🎜Après une connexion réussie, nous pouvons générer le statut de connexion de l'utilisateur et renvoyer une réponse à l'utilisateur en fonction des besoins de l'entreprise, tels que la génération d'un jeton JWT, la configuration d'un cookie, etc. 🎜🎜8. Résumé🎜En utilisant le framework Hyperf et le package d'extension hyperf/socialite fourni par la communauté, nous pouvons rapidement implémenter la fonction de connexion tierce. Dans cet article, nous implémentons la fonction de connexion utilisateur via WeChat et QQ en introduisant des packages de dépendances, en ajoutant des informations de configuration, en créant des contrôleurs et d'autres étapes. Bien entendu, dans les projets réels, nous pouvons également ajouter davantage de méthodes de connexion tierces en fonction des besoins, telles que Weibo, GitHub, etc. J'espère que cet article pourra vous fournir des références pour implémenter la fonction de connexion tierce dans Hyperf. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn