亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Sujets chauds

Comment vérifier si une adresse e-mail est valide en PHP? Comment vérifier si une adresse e-mail est valide en PHP? Sep 21, 2025 am 04:07 AM

Usefilter_var () tovalidateemailsyntaxandcheckdnsrr () toverifydomainmxrecords.example: $ email = "user@example.com"; if (f ilter_var ($ e-mail, filter_validate_email) && checkdnsrr (explosage ('@', $ e-mail) [1], 'mx')) {echo "ValidAndDeliverableMail & Qu

MySQL Aggrégation conditionnelle: Instruction de cas d'utilisation pour mettre en ?uvre le résumé de la condition et le comptage des champs MySQL Aggrégation conditionnelle: Instruction de cas d'utilisation pour mettre en ?uvre le résumé de la condition et le comptage des champs Sep 16, 2025 pm 02:39 PM

Cet article explique en profondeur comment utiliser les instructions de cas pour effectuer une agrégation conditionnelle dans MySQL pour atteindre la sommation conditionnelle et le comptage de champs spécifiques. Grace à un cas de système d'abonnement pratique, il montre comment calculer dynamiquement la durée totale et le nombre d'événements en fonction de l'état des enregistrements (tels que "end" et "annuler"), surmontant ainsi les limites des fonctions de somme traditionnelles qui ne peuvent pas répondre aux besoins d'une agrégation conditionnelle complexe. Le tutoriel analyse en détail l'application des instructions de cas en détail et souligne l'importance de la fusion lorsqu'il s'agit des valeurs nulles possibles de la jointure gauche.

Comment faire une copie profonde ou un clone d'un objet en PHP? Comment faire une copie profonde ou un clone d'un objet en PHP? Sep 21, 2025 am 12:30 AM

UseUnserialize (serialize ($ obj)) FordopcopyingwhenallDataisSerializable; Sinon, implémentez__Clone () TomanuallyDuplicatesedObjectsAndavoidSharedReferences.

Comment fusionner deux tableaux en php? Comment fusionner deux tableaux en php? Sep 21, 2025 am 12:26 AM

UseArray_merge () toCombineArrays, écrasant leduplicatestringKeysAndreIndexingNumericKeys; ForsimplecCaTencatenation, en particulierInphp5.6, usethesplatoperator [... $ array1, ... $ array2].

Comment utiliser des espaces de noms dans un projet PHP? Comment utiliser des espaces de noms dans un projet PHP? Sep 21, 2025 am 01:28 AM

NamespacesInphporganizEcodeAndPreventnamingConflictsBygroupingClasses, Interfaces, Functions et ConstantsunSunSaspecificName.2.DefineanamespaceusingTheNamesPaceSpaceKeyWordAtTopofaFile, suiviByTheNamesPacename, Suchasapp \ Controlers...USUSEUSEKEYWORDTOI

Comment mettre à jour un enregistrement dans une base de données avec PHP? Comment mettre à jour un enregistrement dans une base de données avec PHP? Sep 21, 2025 am 04:47 AM

ToupDateAdatabasereCorDinPhp, FirstConnectUsingPDoOrmysQLi, theNusepreparedStationStoExECUSEASECURSQLUPDATEQUERY.example: $ pdo = newPDO ("MySql: host = localhost; dbname = votre_database", $ username, $ mot de passe); $ sql = "dameussem =.

Quelles sont les méthodes magiques en PHP et fournissent un exemple de `__Call () 'et` __get ()'. Quelles sont les méthodes magiques en PHP et fournissent un exemple de `__Call () 'et` __get ()'. Sep 20, 2025 am 12:50 AM

La méthodiette () méthodiste axée sur le point de réviser la mise en ?uvre de l'inscription, ce qui permet de faire de la maintenance à la qualité de qualité et

Comment obtenir l'extension de fichier en php? Comment obtenir l'extension de fichier en php? Sep 20, 2025 am 05:11 AM

UsePathinfo ($ nom de fichier, pathinfo_extension) togetThefileExtension; itreliabblyHandlesMultipledototsEdGasases, renvoyantTheExtension (par exemple, "pdf") oranemptystringefNoneExists.

See all articles