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

Heim Backend-Entwicklung PHP-Tutorial So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

Jan 14, 2017 am 11:44 AM

Dieser Artikel richtet sich an Benutzer des PHP-Sprach-Laravel-Frameworks. Er stellt eine einfache integrierte WeChat-Anmeldemethode vor, die auf diesem Framework basiert. So verwenden Sie es:

1. Installieren Sie php_weixin_provider

Führen Sie Composer require Thirdproviders/Weixin unter dem Projekt aus, um die Installation abzuschlie?en. Nach erfolgreicher Installation sollten Sie die Bibliotheksdatei php_weixin_provider im Herstellerverzeichnis des Projekts sehen k?nnen:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

2. Konfigurieren Sie die WeChat-Anmeldeparameter

Insgesamt sind 7 Parameter konfigurierbar, n?mlich:

client_id: entspricht der Anwendungs-App-ID, die vom offiziellen Konto erstellt wurde

client_secret: entspricht der Anwendungs-App-ID, die vom ?ffentlichen Konto erstellt wurde

Weiterleitung: Entspricht der Rückrufadresse nach erfolgreicher WeChat-Autorisierung

Proxy_URL: entspricht der von WeChat autorisierten Proxy-Dienstadresse (Sie k?nnen diesen Artikel lesen, um seine Funktion zu verstehen)

Ger?t: Der Unterschied besteht zwischen der WeChat-Anmeldung auf dem PC und der WeChat-Anmeldung auf dem Mobilger?t. Wenn es sich um ein mobiles Ger?t handelt, kann es auf leer gesetzt werden.

state_cookie_name: Der Autorisierungslink enth?lt einen zuf?lligen Statusparameter. Dieser Parameter wird intakt zurückgegeben, wenn WeChat zurückruft. Zu diesem Zeitpunkt k?nnen Sie feststellen, ob die Anforderung gültig ist, indem Sie überprüfen, ob der Statusparameter mit dem im übergebenen Parameter übereinstimmt Autorisierungslink. Verhindern Sie CSRF-Angriffe. Diese L?sung speichert den Statusparameter zun?chst w?hrend der Autorisierung im Cookie. Daher wird dieser Parameter verwendet, um den Namen des Cookies anzugeben, in dem der Statusparameter gespeichert ist. Der Standardwert ist wx_state_cookie.

state_cookie_time: Gibt die Gültigkeitsdauer von wx_state_cookie an, der Standardwert betr?gt 5 Minuten

Für diese sieben Parameter gibt es zwei Einstellmethoden.

Die erste besteht darin, diese Parameter in Gro?buchstaben in der .env-Konfigurationsdatei zu konfigurieren:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

Hinweis: 1. Jedes Konfigurationselement wird gro?geschrieben und beginnt mit WEIXIN_. 2. Die ersten drei Konfigurationselemente sind nicht genau die gleichen wie die zuvor eingeführten Parameternamen. KEY entspricht client_id, und REDIRECT_URI entspricht redirect 3 Andere stimmen mit den zuvor eingeführten Parameternamen überein.

Die zweite besteht darin, diese Parameter in der Datei config/services.php zu konfigurieren:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

Für eine Konfiguration auf diese Weise stimmt der Name jedes Konfigurationselements mit dem zuvor eingeführten überein.

Dinge zu beachten:

Da php_weixin_provider auf Basis von Laravel/Socialite implementiert wird, müssen client_id, client_secret und Redirect konfiguriert werden. Andernfalls tritt w?hrend des Instanziierungsprozesses von php_weixin_provider ein Fehler auf. Für client_id und client_secret ist es meiner Meinung nach kein Problem, sie in einem zu konfigurieren Ort, aber für die UmleitungWenn es einheitlich konfiguriert ist, erfüllt es m?glicherweise nicht die Anforderungen aller Szenarien, da die endgültige Rückrufadresse nicht an jedem Ort identisch ist, an dem WeChat verwendet wird. Daher wird empfohlen, die Umleitung auf eine gültige oder zu konfigurieren ungültige, nicht leere Rückrufadresse; Bei sp?terer Verwendung von php_weixin_provider k?nnen Sie den Wert dieses Parameters auch beim Aufruf ?ndern.

Wenn die Proxy-URL vorhanden ist, wird empfohlen, sie an einem ?ffentlichen Ort zu konfigurieren.

Da state_cookie_name und state_cookie_time beide Standardwerte haben, besteht grunds?tzlich keine Notwendigkeit, sie neu zu konfigurieren
Bei der Nutzung kann das Ger?t angegeben werden.

Alle Konfigurationsparameter k?nnen w?hrend der Nutzung neu angegeben werden.

3. Registrieren Sie php_weixin_provider

Suchen Sie in der Datei config/app.php des Projekts den Abschnitt ?Provider-Konfiguration“ und fügen Sie den folgenden Code zu seinem Konfigurationsarray hinzu:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

4. Registrieren Sie sich für die überwachung von Anmeldeereignissen Dritter

Fügen Sie den folgenden Code zur app/Providers/EventServiceProvider.php des Projekts hinzu:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

Das Laravel-Framework als Ganzes ist eine IOC- und ereignisgesteuerte Idee. Wenn Sie mit js vertraut sind, sind Sie mit ereignisgesteuerten Mustern vertraut , auch bekannt als DI: Dependency Injection). Dies ist der Schlüssel zum Verst?ndnis der Rolle der Konfiguration in den Schritten 3 und 4.

5. Schreiben Sie eine Schnittstelle für die WeChat-Anmeldung

Beispiele sind wie folgt:

//采用代理跳轉(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') gibt eine Instanz von php_weixin_provider zurück, die lautet:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

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

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

舉例如下:

//登錄回調(diào)
Route::get('/login/notify', function () {
 $user = null;
 try {
  $user = Socialite::with('weixin')->user();
 } catch(\Exception $e) {
  return '獲取微信用戶異常';
 }
 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ì)象包含的有效屬性有:

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von 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也都有提供。我在一開始也用的是它官方提供的默認(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)做的:?

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

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

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

So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP

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

更多So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

Wie überprüfen Sie, ob eine E -Mail -Adresse in PHP gültig ist? Wie überprüfen Sie, ob eine E -Mail -Adresse in PHP gültig ist? Sep 21, 2025 am 04:07 AM

UseFilter_var () tovalateMailSyntaxandCheckdnsrr () tuverifyDomainMxRecords.Example: $ EMAMME = "User@example.com"; if (f ilter_var ($ mail, filter_validate_email) && checkDnsrr (explode ('@', $ mail) [1], 'mx') {echo "validandDeliverableMail & qu

MySQL Bedingte Aggregation: Anwendungsfallerkl?rung zur Implementierung des Zustands und der Z?hlung von Feldern MySQL Bedingte Aggregation: Anwendungsfallerkl?rung zur Implementierung des Zustands und der Z?hlung von Feldern Sep 16, 2025 pm 02:39 PM

In diesem Artikel wird eingehalten, wie man Fallanweisungen verwendet, um eine bedingte Aggregation in MySQL durchzuführen, um eine bedingte Summierung und Z?hlung bestimmter Felder zu erreichen. In einem praktischen Abonnement -System -Fall zeigt es, wie die Gesamtdauer und Anzahl der Ereignisse dynamisch auf der Grundlage des Datensatzstatus (z. B. "Ende" und "Abbrechen") berechnet werden kann, wodurch die Einschr?nkungen herk?mmlicher Summenfunktionen überwunden werden, die den Anforderungen der komplexen bedingten Aggregation nicht erfüllen k?nnen. Das Tutorial analysiert die Anwendung von Fallanweisungen in Summenfunktionen im Detail und betont die Bedeutung von Koaleszen, wenn es sich um die m?glichen Nullwerte des linken Join befasst.

Wie erstelle ich eine tiefe Kopie oder Klon eines Objekts in PHP? Wie erstelle ich eine tiefe Kopie oder Klon eines Objekts in PHP? Sep 21, 2025 am 12:30 AM

UseUnSerialize (Serialize ($ OBJ)) FODEPCOPYPYWIEDALLDATAISSERIALIZIABLE; Andernfalls implementieren Sie __Clone () TomanuelleduplicatenestoBjectSandavoidSharedReferences.

Wie fusioniere ich zwei Arrays in PHP? Wie fusioniere ich zwei Arrays in PHP? Sep 21, 2025 am 12:26 AM

Usearray_merge () tocombinearrays, überschreibende DuplicatestringKeysandReindexingnumericKeys;

Wie verwende ich Namespaces in einem PHP -Projekt? Wie verwende ich Namespaces in einem PHP -Projekt? Sep 21, 2025 am 01:28 AM

NamespacesinphporganizeCodeAndPreventnamingConflictsByGroupingclasses, Schnittstellen, Funktionen und Constantsunderaspecificname.2.DefineAnaceStHenameSpaceKeyWorthetopoFafile, gefolgt von BythenameSpacename, solcheasapp \ controllers.3.

Wie aktualisiere ich einen Datensatz in einer Datenbank mit PHP? Wie aktualisiere ich einen Datensatz in einer Datenbank mit PHP? Sep 21, 2025 am 04:47 AM

ToupDateadatabaserecordinphp, FirstConnectusepdoOrmysqli, ThenuSePreparedStatementStoExexexeSecuresQLUPDateQuery.example: $ pdo = newpdo ("MySQL: Host = LocalHost; dbname = your_database", $ username, $ username, $ username);

Was sind magische Methoden in PHP und liefern ein Beispiel für __call () `und __get ()`. Was sind magische Methoden in PHP und liefern ein Beispiel für __call () `und __get ()`. Sep 20, 2025 am 12:50 AM

The__call () methodistiggeredWenaninAccessibleorundEfinedMethodiscalledonanObject, erlaubt CustomHandlingByaccepthodnameandargumente, ashownwhencallingundEfinedMethodselikesayhello (). 2.The__get () methodisinvokedInacescessininginingininginingininginingininginingininginingincessibleceschessibleChessibleChessibleornonon-EX

Wie bekomme ich die Dateierweiterung in PHP? Wie bekomme ich die Dateierweiterung in PHP? Sep 20, 2025 am 05:11 AM

Usepathinfo ($ filename, pathinfo_extension) togetTheFilextesion; itrelablyHandlesMultiPleDOTSandgeCases, ReturningTheExtesion (z.

See all articles