国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end tutoriel php Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

Jan 14, 2017 am 11:44 AM

Cet article s'adresse aux utilisateurs du framework laravel du langage PHP. Il présente une méthode de connexion WeChat intégrée simple basée sur ce framework. Comment l'utiliser?:

1. Installez php_weixin_provider

Exécutez composer nécessite des fournisseurs tiers/weixin dans le cadre du projet pour terminer l'installation. Après une installation réussie, vous devriez pouvoir voir le fichier de bibliothèque php_weixin_provider dans le répertoire du fournisseur du projet?:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

2. Configurez les paramètres de connexion WeChat

Il y a au total 7 paramètres configurables, à savoir :

client_id : correspondant à l'appid d'application créé par le compte officiel

client_secret : correspondant à l'appid d'application créé par le compte public

redirect?: correspond à l'adresse de rappel après une autorisation WeChat réussie

proxy_url : correspond à l'adresse du service proxy autorisé par WeChat (vous pouvez lire cet article pour comprendre sa fonction)

appareil?: La différence est entre la connexion WeChat sur PC et la connexion WeChat sur mobile. La valeur par défaut est PC. S'il s'agit d'un mobile, elle peut être définie sur vide.

state_cookie_name?: le lien d'autorisation contiendra un paramètre d'état aléatoire. Ce paramètre sera renvoyé intact lorsque WeChat rappellera. à ce moment-là, vous pouvez déterminer si la demande est valide en vérifiant si le paramètre d'état est le même que le paramètre transmis dans le fichier. lien d’autorisation. Empêcher les attaques CSRF. Cette solution enregistrera d'abord le paramètre d'état dans le cookie lors de l'autorisation, ce paramètre est donc utilisé pour spécifier le nom du cookie où le paramètre d'état est stocké. La valeur par défaut est wx_state_cookie.

state_cookie_time?: Spécifie la période de validité de wx_state_cookie, la valeur par défaut est de 5 minutes

Il existe 2 méthodes de réglage pour ces sept paramètres.

La première consiste à configurer ces paramètres en majuscules dans le fichier de configuration .env :

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

Remarque?: 1. Chaque élément de configuration est en majuscule et commence par WEIXIN_?; 2. Les trois premiers éléments de configuration ne sont pas exactement les mêmes que les noms de paramètres introduits précédemment. KEY correspond à client_id, SECRET correspond à client_secret et REDIRECT_URI correspond à redirect?3?; . D'autres sont cohérents avec les noms de paramètres introduits précédemment.

La seconde consiste à configurer ces paramètres dans le fichier config/services.php?:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

Pour une configuration de cette manière, le nom de chaque élément de configuration est cohérent avec celui introduit précédemment.

Choses à noter?:

Puisque php_weixin_provider est implémenté sur la base de laravel/socialite, il nécessite que client_id, client_secret et redirect soient configurés, sinon une erreur se produira lors du processus d'instanciation de php_weixin_provider?; pour client_id et client_secret, je pense qu'il n'y a aucun problème à les configurer en un seul. endroit, mais pour la redirection, s'il est configuré de manière uniforme, il peut ne pas répondre aux besoins de tous les scénarios, car l'adresse de rappel finale n'est pas la même dans tous les endroits où la connexion WeChat est utilisée, il est donc recommandé de configurer la redirection vers un ou valide?; adresse de rappel non vide non valide?; de toute fa?on. Lorsque vous utilisez php_weixin_provider ultérieurement, vous pouvez également modifier la valeur de ce paramètre lors de l'appel.

Si proxy_url existe, il est recommandé de le configurer dans un lieu public ;

Puisque state_cookie_name et state_cookie_time ont tous deux des valeurs par défaut, il n'est fondamentalement pas nécessaire de les reconfigurer
?; L'appareil peut être spécifié lors de son utilisation.

Tous les paramètres de configuration peuvent être respécifiés pendant l'utilisation.

3. Enregistrez php_weixin_provider

Dans le fichier config/app.php du projet, recherchez la section de configuration des fournisseurs et ajoutez le code suivant à son tableau de configuration?:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

4. Inscrivez-vous à la surveillance des événements de connexion tiers

Ajoutez le code suivant au fichier app/Providers/EventServiceProvider.php du projet?:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

Le framework Laravel dans son ensemble est une idée IOC et basée sur les événements. Si vous êtes familier avec js, vous serez très familier avec les modèles de conception, vous serez familier avec IOC (Inversion of Control). , également connu sous le nom de DI : Dependency Injection). C'est la clé pour comprendre le r?le de la configuration dans les étapes 3 et 4.

5. écrivez une interface pour la connexion à WeChat

Les exemples sont les suivants?:

//采用代理跳轉(zhuǎn),從PC端微信登錄
Route::get('/login', function () {
 return Socialite::with('weixin')
  ->setProxyUrl('http://proxy.your.com')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//采用代理跳轉(zhuǎn),從手機(jī)端微信登錄
Route::get('/login2', function () {
 return Socialite::with('weixin')
  ->setProxyUrl('http://proxy.your.com')
  ->setDevice('')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//不采用代理跳轉(zhuǎn),從PC端微信登錄
Route::get('/login', function () {
 return Socialite::with('weixin')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//不采用代理跳轉(zhuǎn),從手機(jī)端微信登錄
Route::get('/login4', function () {
 return Socialite::with('weixin')
  ->setDevice('')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});

Socialite::with('weixin') renverra une instance de php_weixin_provider, qui est?:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

拿到這個(gè)實(shí)例之后,就可以采用鏈?zhǔn)降姆绞秸{(diào)用它提供的所有public方法,比如設(shè)置配置參數(shù),setDevice等等。

6. 編寫(xiě)微信登錄回調(diào)的接口

舉例如下:

//登錄回調(diào)
Route::get('/login/notify', function () {
 $user = null;
 try {
  $user = Socialite::with('weixin')->user();
 } catch(\Exception $e) {
  return '獲取微信用戶(hù)異常';
 }
 return $user->nickname;
});

通過(guò)Socialite::with('weixin')拿到php_weixin_provider實(shí)例后,調(diào)用user方法,就會(huì)自動(dòng)跟微信調(diào)用相關(guān)接口,并把微信的返回值封裝成對(duì)象返回。如果在此過(guò)程中,有任何錯(cuò)誤都會(huì)以異常的形式拋出,比如state參數(shù)校驗(yàn)失敗,比如code失效等。

返回的$user對(duì)象包含的有效屬性有:

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

小結(jié):

這個(gè)方案是基于laravel/socialite實(shí)現(xiàn),并發(fā)布到composer來(lái)使用的。laravel/socialite是laravel官方提供的第三方登錄的模塊,基于它可以很方便的集成大部分第三方平臺(tái)的認(rèn)證,目前它官方已經(jīng)提供很多第三方的登錄實(shí)現(xiàn):https://socialiteproviders.github.io/。除了國(guó)外的facebook,google,github等,國(guó)內(nèi)的微信,微博,qq也都有提供。我在一開(kāi)始也用的是它官方提供的默認(rèn)的微信登錄provider來(lái)做的,但是后來(lái)我發(fā)現(xiàn)了以下幾個(gè)問(wèn)題:

1. 不支持微信授權(quán)的代理;

2. pc端跟移動(dòng)端竟然還是分兩個(gè)項(xiàng)目來(lái)做的:?

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

3. 它封裝的user對(duì)象里竟然不包含unionid

4. 更改配置參數(shù)的方式,實(shí)在是讓人覺(jué)得難以使用:?

Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP

所以我就在它官方的微信登錄provider基礎(chǔ)上,按照自己的想法,重新實(shí)現(xiàn)了一個(gè)來(lái)解決我發(fā)現(xiàn)的這些問(wèn)題。

更多Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


Déclaration de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les meilleures pratiques pour verser une API basée sur PHP? Quelles sont les meilleures pratiques pour verser une API basée sur PHP? Jun 14, 2025 am 12:27 AM

Toversionaphp basé sur la performance, utilisation de la Version basée sur la croissance et la SEAFROURSE, Séparable CodééToAvoid Conclict, dépréciant les versions avec la Communication et la vision de la ConsiderCustomEnlywhencesseary.

Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Jun 20, 2025 am 01:03 AM

ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

Quelles sont les références faibles (faiblemap) en PHP, et quand pourraient-ils être utiles? Quelles sont les références faibles (faiblemap) en PHP, et quand pourraient-ils être utiles? Jun 14, 2025 am 12:25 AM

PhpDoOesNothAveAbilt-InweakMapButoffersWeakreferenceForsiMarFonctionality.1.WeakReferenceallowsholdingreferences withoutpreventinggarbageCollection.2.itisationfulforcaching, les événements, et lametadatawithoutaffectingobjectlifecycles.3.

Quelles sont les différences entre les paradigmes de programmation procéduraux et orientés objet en PHP? Quelles sont les différences entre les paradigmes de programmation procéduraux et orientés objet en PHP? Jun 14, 2025 am 12:25 AM

ProcéduralandObject-OriendEdProgramming (OOP) inphpdiffersignifiancely instructure, réutilisabilité et datahandling.1.ProceduralProgrammingususFonctionnets organisé sécrégence, approprié modéliste.2.

Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Jun 19, 2025 am 01:05 AM

Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Jun 19, 2025 am 01:07 AM

En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Jun 19, 2025 am 01:07 AM

Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Jun 19, 2025 pm 05:13 PM

Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

See all articles