


Comment intégrer rapidement la connexion WeChat au framework Laravel de PHP
Jan 14, 2017 am 11:44 AMCet 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?:
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 :
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?:
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?:
4. Inscrivez-vous à la surveillance des événements de connexion tiers
Ajoutez le code suivant au fichier app/Providers/EventServiceProvider.php du projet?:
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?:
拿到這個(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ì)象包含的有效屬性有:
小結(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)做的:?
3. 它封裝的user對(duì)象里竟然不包含unionid
4. 更改配置參數(shù)的方式,實(shí)在是讓人覺(jué)得難以使用:?
所以我就在它官方的微信登錄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)!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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.

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

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

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

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.

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.

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.

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.
